[英]App Transport Security blocks HTTPS
我對ATS有疑問。 我正在使用XCode 9.1,我的開發目標是11.0。 我正在使用react-native 0.49進行開發
我的程序正在獲取https ( https://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.