首页 > 解决方案 > iOS 10.3 中证书透明度的 Cordova SSL 错误

问题描述

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

导致 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 握手期间发送 UNKNOWN。

标签: ioscordovasecurityionic3ssl-certificate

解决方案


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

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

SSL 握手期间未知

吸引住了我的眼球。

从 iOS 10.3 开始,新自定义证书的默认设置是不信任它们。是的,此选项在 10.3 之前存在,但未强制执行,因此默认情况下已启用。您可以在连接到应用程序的charles 代理博客上找到此信息,但我认为它在您的情况下也是有效的。

要启用证书:

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

你可以在这里找到它提到的Technical Q&A QA1948 HTTPS and Test Servers

此外:

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

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


推荐阅读