https适配及https抓包

关于苹果的碎碎念

苹果在 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这个网址,然后手机会自动下载安装证书,安装成功后,就可以在真机上抓包了。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容