ios 如何去掉 ssl pinning
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios 如何去掉 ssl pinning相关的知识,希望对你有一定的参考价值。
参考技术A 使用ssl pinning可以消除这个可能。也可能用户本身故意作为攻击者来探查加密的网络流量。可能使用 charles 或者mitmproxy来安装一个受信任的证书。你的app需要有能力通过ssl pinning来阻止这种嗅探攻击。 参考技术B 不想设置就不用升级就可以了。SSL pinning - 在 AFSecurityPolicy 中设置固定公钥而不是固定证书
【中文标题】SSL pinning - 在 AFSecurityPolicy 中设置固定公钥而不是固定证书【英文标题】:SSL pinning - setting pinned public keys instead of pinned certificates in AFSecurityPolicy 【发布时间】:2015-04-17 18:12:49 【问题描述】:我正在使用 AFNetworking 进行 SSL 固定。我得到它使用以下代码。
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModePublicKey];
[manager.securityPolicy setPinnedCertificates:myCertificate];
我的问题是,有没有办法在 AFSecurityPolicy 中设置公钥而不是证书?我们的证书偶尔会更改一次,我不想将其传递进去。AFSecurityPolicy.h 中没有 setPublicKeys 方法。 AFSecurityPolicy.m 有一个属性pinnedPublicKeys
,但无法设置,因为它不在头文件中。
提前致谢。
【问题讨论】:
【参考方案1】:密钥是从证书中提取的,可以使用捆绑包中的.cer
文件自动提取,也可以在您手动设置pinnedCertificates
属性时提取。即使旧证书已过期,新证书也可以使用,只要公钥不变。
参见the implementation of setPinnedCertificates:
(以及AFPublicKeyForCertificate
函数)。如果您不清楚它是如何工作的,我建议您设置一个断点并在应用启动时单步执行它。
【讨论】:
有道理,我确实看到 AFSecurityPolicy 对我的证书所做的所有事情都是提取我的公钥,实际上我什至可以使用正确的公钥创建一个虚拟证书。以上是关于ios 如何去掉 ssl pinning的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SFSafariViewController 上实现 SSL Pinning?
iOS SSL Pinning 没有使用 AFNetworking 的证书?
使用 TrustKit iOS 在 react-native 应用程序中实现 ssl pinning