【问题标题】:How to check certificate transparency used during server trust如何检查服务器信任期间使用的证书透明度
【发布时间】:2021-10-21 01:45:52
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios swift security networking certificate-transparency


    【解决方案1】:

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

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

    关于:

    这里的问题是这个键只存在于 iOS 13 之后。

    kSecTrustCertificateTransparency 和 NSRequiresCertificateTransparency 在 iOS 9+ 中可用。

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

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 2012-05-21
      • 1970-01-01
      • 2015-08-16
      • 2020-11-14
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多