1

我们正在构建一个使用证书透明性来验证 SSL 连接的 iOS SDK。这最初是在 info.plist 中使用 ATS 实现的,但我们遇到了一个问题:

用户可以安装配置文件并完全信任允许他们覆盖这些检查的根证书。Burpsuite 也是开箱即用的。

我们找到的解决方法是使用URLSessionDelegate并在评估后检查SecTrustCopyResult(_: SecTrust)key的结果kSecTrustCertificateTransparency,确保值为true.

这里的问题是这个键只在 iOS 13 之后才出现。我们应该如何为早期版本的 iOS 实现这一点?(我们目前支持 iOS 11.0 及更高版本)

4

1 回答 1

0

参考:https ://developer.apple.com/forums/thread/688302

使用 iOS 11.4(r.74226999 和 r.30743827)设备上的本地 CT 日志执行证书透明度检查现在已过时,因此在 iOS 11 上使用 ATS 密钥对 NSRequiresCertificateTransparency 执行额外验证时,无法保证这些验证工作了。

关于:

这里的问题是这个键只在 iOS 13 以后才存在。

kSecTrustCertificateTransparency 和 NSRequiresCertificateTransparency 在 iOS 9+ 中可用。

我仍然建议您从 URLSessionDelegate 查看 SecTrust 对象中的证书链。这应该能够告诉您这里正在使用哪些证书,如果另一方正在使用证书执行代理操作,您应该能够在此处看到这一点。

于 2021-08-20T17:49:52.560 回答