如何检查服务器信任期间使用的证书透明度



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

用户可以安装配置文件并完全信任根证书,这将允许他们覆盖这些检查。Burpsuite也能做到这一点。

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

这里的问题是这个键只从iOS 13开始出现。我们应该如何在早期版本的iOS中实现这一点?(我们目前支持iOS 11.0及以上版本)

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

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

关于:

这里的问题是这个键只在iOS 13以后出现。

kSecTrustCertificateTransparency和NSRequiresCertificateTransparency在ios9 +中可用。

我仍然建议您查看来自URLSessionDelegate的SecTrust对象中的证书链。这应该能够告诉你这里使用的是什么证书,如果另一方使用证书来执行代理操作,你应该能够在这里看到。

相关内容

  • 没有找到相关文章

最新更新