簡體   English   中英

iOS App傳輸安全性問題

[英]iOS App Transport Security issue

TL; DR:

我有一個iOS應用程序連接到符合新ATS功能的最低要求一個web服務。 我已經修改了Info.plist以允許例外,因此我的應用程序仍可以連接到Web服務。 iOS 9上的NSURLSession / NSURLConnection HTTP加載失敗 )在開發中可以正常工作,但是, 我剛剛推送到商店的更新仍然無法訪問Web服務。 我不知道斷開發生在哪里或如何解決。

===

首先,這都是在模擬器中發生的,當我直接在xcode中部署到ipad時,行為相同:

我正在嘗試通過iOS應用中的https連接到Web服務。 現在,每次嘗試連接到Web服務時都會出現此錯誤:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

據我了解,這是由於新的ATS功能不允許連接而發生的。 我已通過將修復程序( iOS 9上的NSURLSession / NSURLConnection HTTP加載失敗 )應用於我的Info.plist文件來確認這一點:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>mydomain.com</key>
    <dict>
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <key>NSIncludesSubdomains</key>
      <true/>
      </dict>
  </dict>
</dict>

一旦輸入,它就可以毫無問題地連接到Web服務。

顯然,雖然我的服務器符合TLS 1.2要求和密碼要求,但它不符合簽名要求( https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html #// apple_ref / doc / uid / TP40009251-SW35

但是,我已經對我的應用程序進行了更新並推送到應用程序商店,但是我的應用程序的商店版本無法連接到Web服務。 從xcode部署到本地計算機上時,相同的代碼可以很好地構建並在設備上運行,但是商店中的版本似乎忽略了.plist修復程序。 我怎樣才能解決這個問題? 這對我完全沒有意義。

嘗試使用此版本的info.plist配置:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>www.example.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

編輯:嘗試也將NSExceptionRequiresForwardSecrecy指定為NO

嘗試將以下代碼添加到您的info.plist

<key>NSAppTransportSecurity</key>  
     <dict>  
      <key>NSAllowsArbitraryLoads<key><true/>  
     </dict>  

有關更多信息,請參見鏈接: 蘋果論壇

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM