标签: sslpinning

使用 Info.plist 中的 NSRequiresCertificateTransparency 键进行 iOS TLS/SSL 固定

我想使用 SSL Pinning 来保护我的应用程序免受中间人 (mitm) 攻击。
\n默认情况下,可以使用 Charles 或 mitmproxy 等代理来拦截流量,并使用自签名证书对其进行解密。

\n

经过广泛的研究,我发现了几种选择:

\n
    \n
  1. 添加NSPinnedDomains > MY_DOMAIN > NSPinnedLeafIdentitiesInfo.plist
    \nApple 文档:身份锁定
    \nGuardsquare:利用基于 Info.plist 的证书锁定
    \n优点:简单
    \n缺点:一旦更新证书/私钥(通常在几个月后),应用程序将变得无法使用

    \n
  2. \n
  3. 添加NSPinnedDomains > MY_DOMAIN > NSPinnedCAIdentitiesInfo.plist
    \nApple 文档:与上面相同
    \n优点:简单。叶证书续订不会失败,因为根 CA 已被固定(过期日期几十年后)
    \n缺点:似乎多余,因为大多数根 CA 已包含在操作系统中

    \n
  4. \n
  5. 检查代码中的证书URLSessionDelegate> SecTrustEvaluateWithError(或 Alamofire 包装器)
    \nRay Wenderlich:使用 SSL Pinning 防止 iOS 中的中间人攻击\n
    \nApple 文档:处理身份验证质询
    \nMedium 文章:有关 SSL Pinning 您需要了解的所有信息
    \n中型文章:使用 …

ios swift certificate-pinning public-key-pinning sslpinning

5
推荐指数
1
解决办法
3460
查看次数