美文网首页
https适配及https抓包

https适配及https抓包

作者: 子书不言 | 来源:发表于2017-01-10 15:36 被阅读183次

关于苹果的碎碎念

苹果在 WWDC 2016 上宣布:2016 年底将要求所有 APP 适配苹果的 App Transport Security,简单的来说就是app上的所有明文请求都需要由http请求变成https 请求,如果没有适配且没有进行必要的说明,那么就会审核不通过。不过,就在前不久苹果怂了(我猜的!),将这个deadline无限期推迟,我能说什么呢,当然是好开心!

适配https

言归正传,关于什么是https,https的原理啥的网上资料很多,在这里我就不多重复了,有兴趣的可以去查阅相关资料。下面就来说说我在适配时遇到的一些问题。

1 . 证书相关

适配https,首先我们需要的就是证书。那么如何拿到证书,一种是让后台大哥要,或者你懒得要那么也可以自己去下一个,以百度为例,用Safari打开https://www.baidu.com

百度网址
点击那个小锁,打开显示证书,将baidu.com这个证书拖到桌面就可以获得证书了。同理将百度换成你们app的域名就可以了。
证书详细
那么获得了证书,然后呢,直接拖进工程吗?不,首先我们要确认一下,这个证书是什么类型的证书,证书目前分三种:
  • 自建证书
  • 免费证书
  • 收费证书

自建证书不在苹果的信任列表里,需要拖进工程进行双向认证,而剩下两种都是由第三方机构颁发的,都属于苹果的信任列表里,是不需要拖进工程里的。注意:苹果将沃通和StartCom的根证书列为不信任

苹果不再信任沃通和StartCom证书

如果有同学发现自己的证书在ios9上可以用,在ios10上不可以用时,那么你就要看看你的证书的根证书是什么了,建议就是换一家证书颁发机构,免费的阿里云,腾讯云等都可以。
如何验证证书是否可行,用nscurl命令就可以了,全部pass就表示没问题

nscurl --ats-diagnostics --verbose https://example.com

如果你是申请的第三方证书,恭喜你,改改域名就可以了。如果是自建证书,那么你还要继续。

2 . 代码适配

自建证书,那么要辛苦一点,把下载下来的.cer证书拖进工程里面,然后配置一下,以AFN为例:

NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"serve" ofType:@"cer"];
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
NSSet *cerSet = [NSSet setWithObjects:cerData, nil];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
securityPolicy.allowInvalidCertificates = NO; // 如果需要验证自建证书,需要设置为YES
securityPolicy.validatesDomainName = NO; // 是否需要验证域名,默认为YES
// 添加证书 [securityPolicy setPinnedCertificates:cerSet]; 
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init]; manager.securityPolicy = securityPolicy;

关于AFSSLPinningMode这个属性,有三个选项:

  • AFSSLPinningModeNone:完全信任服务器返回的证书,默认选项,选了这个你托证书进来也没啥意义了
  • AFSSLPinningModePublicKey:对比你本地的证书和服务器返回的证书是否完全一样
  • AFSSLPinningModeCertificate :对比你本地的证书和服务器返回的证书的public key是否一样。

选哪种模式好呢?

  • AFSSLPinningModeCertificate:比较安全,但是也比较麻烦,你的证书过期了,那么你就要出一个新版本的app并且旧版本的就不能用了,当然你也可以每次启动时来通过一个接口来查询是否有新的证书。
  • AFSSLPinningModePublicKey:只对比public key,即使服务器的证书变了,只要public key不变,一样可以通过验证
    所以,如果你确保每个使用者都是使用的最新的app,就用AFSSLPinningModeCertificate,不是的话,选择AFSSLPinningModePublicKey比较好。

https抓包

用Charles抓包在开发中是很方便的,尤其在跟后台的同学交流过程中起到比较重要的作用。但是在完成https之后,我们再抓包,发现抓到一堆乱码,是不是很坑爹,没事,接下来我们就解决它。

1 . Charles设置

首先现去下载最新版的Charles,因为我用旧版没成功(估计是我没重启/斜眼笑),官网和网上的破解版都可以。

Charles设置1
给模拟器和系统安装这两个证书,打开钥匙串,设置证书为始终信
证书设置信任
在Charles里添加端口号443
设置的端口号
重启模拟器(重要的一步),然后就可以抓包了,如果还不行,重启电脑。

2 . 手机设置

先用手机设置代理连上Charles,然后用Sarfari打开http://charlesproxy.com/getssl这个网址,然后手机会自动下载安装证书,安装成功后,就可以在真机上抓包了。

还有一些白名单设置,因为政策还没出,所以那些就以后再补充了

相关文章

  • https适配及https抓包

    关于苹果的碎碎念 苹果在 WWDC 2016 上宣布:2016 年底将要求所有 APP 适配苹果的 App Tra...

  • https 抓包

    https://www.cnblogs.com/lanleiming/p/5947104.html

  • HTTPS 抓包

    52破解论坛内的一个帖子[Android 转帖] Android平台HTTPS抓包解决方案及问题分析https:/...

  • https抓包

    目录 关于Charles Charles安装、破解、授权 手机配置 Charles证书申请、信任 添加被监听的ht...

  • 抓包https:

    https://www.cnblogs.com/canfoo/p/6169599.html[https://www...

  • 抓包https

  • ios 中如何适配https

    iOS中http转https,及https请求抓包转ios中配置https记录

  • Mac 电脑抓HTTPS包 手机/Charles配置流程

    <关键字: Mac抓包 Charles抓HTTPS包 Mac抓HTTPS包 手机抓HTTPS包> 1、确保手机和电...

  • Charles https抓包

    1.安装Charles 2.Help -> SSL Proxying -> Install Charles Roo...

  • mitmproxy https 抓包

    之前一直用 charles 抓包, 但 charles 是收费的还得破解。 无意中发现 mitmproxy 挺好用...

网友评论

      本文标题:https适配及https抓包

      本文链接:https://www.haomeiwen.com/subject/qyhluttx.html