繁体   English   中英

App Transport Security阻止HTTPS

[英]App Transport Security blocks HTTPS

我对ATS有疑问。 我正在使用XCode 9.1,我的开发目标是11.0。 我正在使用react-native 0.49进行开发

我的程序正在获取httpshttps://www.xxxx.com )资源,该资源具有有效的(谷歌浏览器)letsencrypt证书。 只有当NSAllowsArbitraryLoads设置为true时,fetch才有效,当设置为false时,fetch被阻塞(调试输出)?

我正在使用临时域( https://xxxx.no-ip.org )进行一些测试。 此域还具有有效的letsencrypt证书。 在这种情况下一切正常。

我在两台主机之间看到的唯一区别是测试域是单域主机,生产主机是多域主机。 有人建议吗?

问候,

掠夺


调试: CFNetwork Diagnostics [1:1187] 12:38:08.258 {失败:(null)Loader:{url = https:// ....错误:错误域= kCFErrorDomainCFNetwork代码= -1200“(null) “UserInfo = {_ kCFStreamPropertySSLClientCertificateState = 0,_kCFNetworkCFStreamSSLErrorOriginalValue = -9802,_kCFStreamErrorDomainKey = 3,_kCFStreamErrorCodeKey = -9802}

这是我的info.plist部分

<key>NSAppTransportSecurity</key>
  <dict>
  <key>NSAllowsArbitraryLoads</key>
  <false/>
  <key>NSExceptionDomains</key>
  <dict>
  <key>xxxx.no-ip.org</key>
  <dict/>
  <key>localhost</key>
  <dict>
  <key>NSExceptionAllowsInsecureHTTPLoads</key>
  <true/>
  </dict>
  <key>xxxx.com</key>
  <dict>
  <key>NSIncludesSubdomains</key>
  <true/>
</dict>  </dict>  </dict>

如果您尝试通过HTTPS连接,则使用NSExceptionAllowsInsecureHTTPLoads不应执行任何操作。 您的网址( https://www.xxxx.com )是否可能将流量重定向到http://www.xxxx.com

还有其他一些例外情况会影响HTTPS流量,这些异常将允许不满足HTTPS所有要求的HTTPS连接(例如Forward Secrecy,TLS版本,密钥强度)。 你需要做的是弄清楚它失败的确切原因。

要测试ATS合规性的URL,请在Mac上使用nscurl --ats-diagnostics <url>命令。 您可以了解更多有关ATS一般,也就是如何在使用/解释nscurl命令的结果上面这个帖子

此外,您可以通过更改CFNETWORK_DIAGNOSTICS级别来提高日志记录以获取有关其失败原因的更多详细信息。 你可以在这里找到更多相关信息。

有时会发生这种情况,因为您的证书不符合Apple要求的TLS版本的所有要求。

尝试将此添加到域https://www.xxxx.com

<key>NSExceptionRequiresForwardSecrecy</key>
<true/>

并且不要忘记包含子域名:

<key>NSIncludesSubdomains</key>
<true/>

如果这没有帮助,那么您可以尝试找到您想要支持的最小TLS版本:

<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>

如果所有过去的都不起作用,请尝试添加以下内容:

<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM