我想使用 SSL Pinning 来保护我的应用程序免受中间人 (mitm) 攻击。
\n默认情况下,可以使用 Charles 或 mitmproxy 等代理来拦截流量,并使用自签名证书对其进行解密。
经过广泛的研究,我发现了几种选择:
\n添加NSPinnedDomains > MY_DOMAIN > NSPinnedLeafIdentities到Info.plist
\nApple 文档:身份锁定
\nGuardsquare:利用基于 Info.plist 的证书锁定
\n优点:简单
\n缺点:一旦更新证书/私钥(通常在几个月后),应用程序将变得无法使用
添加NSPinnedDomains > MY_DOMAIN > NSPinnedCAIdentities到Info.plist
\nApple 文档:与上面相同
\n优点:简单。叶证书续订不会失败,因为根 CA 已被固定(过期日期几十年后)
\n缺点:似乎多余,因为大多数根 CA 已包含在操作系统中
检查代码中的证书URLSessionDelegate> SecTrustEvaluateWithError(或 Alamofire 包装器)
\nRay Wenderlich:使用 SSL Pinning 防止 iOS 中的中间人攻击\n
\nApple 文档:处理身份验证质询
\nMedium 文章:有关 SSL Pinning 您需要了解的所有信息
\n中型文章:使用 …