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

vh0rcniy  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(134)

我得到以下错误消息(每次尝试都是相同的)
2016-07-20 20:09:28.013 MyApp[1140:374263] CFNetwork SSLHandshake failed(-9806)2016-07-20 20:09:28.014 MyApp[1140:374263] NSURLSession/NSURLConnection HTTP load failed(kCFStreamErrorDomainSSL,-9806)error=Optional(Error Domain=NSURLErrorDomain Code=-1200“An SSL error has occurred and a secure connection to the server cannot be made.”UserInfo={_kCFErrorCodeKey =-9806,NSLocalizedRecoverySugggestion =是否仍要连接到服务器?,NSUnderlyingError= 0x 154 dda 750 {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提供的经过验证的证书。我已经一遍又一遍地测试了我的Web服务器配置,一切似乎都是应该的。
运行命令openssl s_client -connect example.com:8080/api/login -tls1_2会得到所有预期的结果:

  • 验证权限为DST Root CA X3,包含在Apples root CA list
  • 返回的代码是Verify return code: 0 (ok)
    我还运行了几个ssl诊断工具网站,如digicert,它没有给出任何错误结果。
    我可以从iOS设备上的Safari加载域,以及从我的电脑上加载Chrome,而不必接受“不受信任的证书”。
    有什么建议吗?
k10s72fa

k10s72fa1#

如果有人遇到同样的问题,我会回答我自己的问题。在提出问题时,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>

字符串
沿着某个时候,他们将其更改为default land on false。我不知道这是什么时候的事,但在iOS 10.0之后,这从来都不是问题。

2nbm6dog

2nbm6dog2#

如果有人在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>

字符串

相关问题