“发生 SSL 错误,无法使用经过验证的证书建立与服务器的安全连接”

问题描述 投票:0回答:3

我收到以下错误消息(每次尝试都是相同的)

2016-07-20 20:09:28.013 MyApp[1140:374263] CFNetwork SSL握手失败(-9806) 2016-07-20 20:09:28.014 MyApp[1140:374263] NSURLSession/NSURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9806) error=Optional(Error Domain=NSURLErrorDomain Code=-1200“发生了 SSL 错误,无法与服务器建立安全连接。” UserInfo={_kCFStreamErrorCodeKey=-9806, NSLocalizedRecoverySuggestion=您仍然要连接到服务器吗? 、 NSUnderlyingError=0x154dda750 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0、_kCFNetworkCFStreamSSLErrorOriginalValue=-9806、_kCFStreamErrorDomainKey=3、_kCFStreamErrorCodeKey=-9806}}、NSLocalizedDescription=发生 SSL 错误一个无法与服务器建立安全连接。, NSErrorFailingURLKey=https://example.com:8080/api/login, NSErrorFailingURLStringKey=https://example.com:8080/api/login, _kCFStreamErrorDomainKey=3} )

该证书是由 LetsEncrypt 提供的经过验证的证书。我一遍又一遍地测试了我的网络服务器配置,一切似乎都正常。

运行命令

openssl s_client -connect example.com:8080/api/login -tls1_2
给出所有预期结果:

-它验证权限为

DST Root CA X3
,包含在Apples根CA列表

-返回代码是

Verify return code: 0 (ok)

我还运行了几个ssl诊断工具网站,例如digicert,没有给出错误结果。


我可以从 iOS 设备上的 Safari 加载域,也可以从我的计算机上的 chrome 加载域,而无需接受“不受信任的证书”。

有什么建议吗?

ios ssl https
3个回答
3
投票

如果有人遇到同样的问题,我会回答我自己的问题。 在提出问题时,Let's Encrypt(所使用证书的 CA)不支持其 https 证书的前向保密(至少不是我得到的证书)。苹果在当时使用的 iOS 版本中默认要求这样做(我相信是在 9.5 左右,但我可能在这里弄错了)。

为了绕过前向保密的要求,可以在 Info.plist 中的域例外下指定。

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>example.com</key>
    <dict>
      <key>NSTemporaryExceptionRequiresForwardSecrecy</key>
      <false/>
    </dict>
  </dict>
</dict>

在路上的某个时候,他们将其更改为默认着陆错误。我不确定这是什么时候的事,但在 iOS 10.0 之后,这再也不是问题了。


1
投票

如果有人在 2023 年与自签名证书作斗争,这里是完整的内容:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>YOUR-URL.COM</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>

0
投票

当我的应用程序尝试从我的服务器下载图像时,我收到 SSL 错误。下面的过程我已经修复了错误。

2024 年 5 月之后,您必须在项目中创建 App Privacy plist 文件,并在该 plist 文件中添加以下代码

<key>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryDiskSpace</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>E174.1</string>
            </array>
        </dict>
    </array>

我已添加图片以了解更多详细信息 enter image description here enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.