簡體   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