iOS 10.3 中证书透明度的科尔多瓦 SSL 错误



在 Ionic 应用程序配置文件中启用证书透明度后,iOS 10.3 的 AJAX 调用开始失败,并出现 SSL 错误。但是,它在iOS 11及更高版本中没有任何问题。与服务器的连接适用于本机iOS应用程序,Angular Web应用程序。它仅在科尔多瓦编译的应用程序中失败。

导致 AJAX 通信失败的配置

<access minimum-tls-version="TLSv1.2" origin="https://example.com" requires-certificate-transparency="true" requires-forward-secrecy="false" />

通信与 XCode 中的以下设置一起工作

<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>

在网络日志中,应用程序似乎在 SSL 握手期间发送未知。

编辑- 必须重新审视问题并正确阅读

起初我认为配置可能有问题,但后来:

SSL 握手期间未知

引起了我的注意。

从iOS 10.3开始,新自定义证书的默认值为不 相信他们。 是的,此选项在 10.3 之前存在,但未强制执行,因此默认情况下处于打开状态。 您可以在查尔斯代理博客上找到此信息 - 该博客与应用程序相连,但我认为它对您的情况也有效。

要启用证书,请执行以下操作:

您必须转到Settings > General > About > Certificate Trust Settings并启用所需的证书。

你可以在这里找到它提到的技术问答QA1948 HTTPS 和测试服务器。

另外:

您可以使用nscurl工具来诊断 ATS 连接问题。

用法/usr/bin/nscurl --ats-diagnostics [--verbose] URL然后您将更详细地失败。

最新更新