常用技术收集理论攻城狮

iOS - Charles抓https的包(双向认证)

2017-01-20  本文已影响1124人  程序员咿呀咿呀哟

最近为了配合测试来抓公司做的app的包,研究了下如何抓https,讲一下遇到的坑。

<div style = "color : red; font-size:18px"> ! 强调下Charles 版本 v4.0.1 </div>

正常抓包,网上很多,随便搜索下一就能搜索到

类似 配置下 ip 端口 启用下ssl 信任下花瓶的证书 就抓到了。

问题

可是自家公司做的app ,就算配置了ip及端口,启用了ssl,信任了证书,怎么抓都还是乱码。

+ (AFSecurityPolicy *)securityPolicy
{
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
    [securityPolicy setAllowInvalidCertificates:NO];
    [securityPolicy setValidatesDomainName:YES];
    return securityPolicy;
}

仔细看了下这个枚举

typedef NS_ENUM(NSUInteger, AFSSLPinningMode) {
    AFSSLPinningModeNone,
    AFSSLPinningModePublicKey,
    AFSSLPinningModeCertificate,
};

AFSSLPinningModeNone: 代表客户端无条件地信任服务器端返回的证书。
AFSSLPinningModePublicKey: 代表客户端会将服务器端返回的证书与本地保存的证书中,PublicKey的部分进行校验;如果正确,才继续进行。
AFSSLPinningModeCertificate: 代表客户端会将服务器端返回的证书和本地保存的证书中的所有内容,包括PublicKey和证书部分,全部进行校验;如果正确,才继续进行。
AFNetWork SSL参考网址

如此就真相大白了,只要把他去去掉就完事了。(我的处理方式是在debug模式下,不启用这句话)这样测试正常抓到https的包了!

如果大家遇到其他的坑的话, 具体详情可以留言交流。

上一篇 下一篇

猜你喜欢

热点阅读