2017-06-22 54 views
13

我剛剛下載了最新版本的Xcode(9.0測試版(9M136h))。Xcode的9 - 11的iOS:NSURLConnection的 - sendAsynchronousRequest失敗

然而,當我試圖在iOS的11模擬器到我的服務器提出請求(使用NSURLConnection的sendAsynchronousRequest),收到錯誤:

NSURLSession/NSURLConnection的HTTP加載失敗(kCFStreamErrorDomainSSL,-9807) NSURLConnection的成品錯誤代碼-1202

NSError對象包含消息 - @「NSLocalizedDescription」:@「此服務器的證書無效,您可能連接到假裝爲」***「的服務器,把你的機密信息置於危險之中。「

plist中包含:

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

所以它不是在這種情況下(我猜)

不用說,它在iOS的10/9/8

工作問題有什麼建議麼?

在此先感謝!

+0

解決這個問題? –

+1

@ChrisVanBuskirk不完全。我向我們那個說過這可能與已過期的證書有關的嚴重人士伸出援手。看起來像在iOS 11中,他們強調整個安全問題。至於現在我在URLSession委託的didReceive挑戰中使用completionHandler(.useCredential,URLCredential(trust:challenge.protectionSpace.serverTrust)),只是爲了使其工作。 – dor506

+0

@ dor506你可以請你出示你的修補程序嗎?我一直在爲此工作9個小時,並且我可以幫助我獲得atm。我第一次在obj c中編碼。 – ODelibalta

回答

1

對於所有在iOS 11中遇到此錯誤的人,請確保您的服務器上的有效(安全)證書工作正常。

在我們的案例中,證書不夠嚴格。

一旦我們的服務器傢伙集成新的有效證書,這個問題已經沒有了。

一種方法來檢查,如果該證書被固定,是過去在瀏覽器中有問題的鏈接。

其結果是,你可能會看到,連接不可靠:

enter image description here

+0

我很欣賞這個更新,但是這並不適用於我。 Chrome瀏覽器在我的iOS 11測試手機上使用URL以及Safari瀏覽器可以正常工作 – ODelibalta

5

你需要讓你的應用程序運行的HTTP(無S)連接。默認情況下,蘋果只允許HTTPS:

  1. 去你的info.plist

    here

  2. 然後按其中任何的加號圖標
  3. 搜索「應用交通運輸安全設置」 here
  4. 點擊左邊的小箭頭,找到「允許任意加載」,默認情況下它被設置爲「NO」將其改爲「YES」
+2

根據Security.SE和Crypto.SE的信息,您會因爲安全實踐不佳而被指責。 – DannyNiu

+0

可能是,但它是他的問題的解決方案 – Carter4502

+0

它不是解決方案,例如我有HTTP請求,我已經設置允許任意加載爲YES,但無論如何,我有相同的錯誤:任務<6CBEEC35-4B88-43A1-9269- 1B919EA0FD81>。 <72>已完成,出錯代碼:-999 – Genevios

0

既然你已經有了一個無效的證書錯誤,我會根據我個人的安全做法提出以下建議。

如果你仍然在與CA的服務條款,要求他們發出新的有效證書給你。

檢查您的鑰匙串設置,並確保沒有CA證書丟失。

或者,您可以爲測試目的頒發自己的自簽名證書,並將其作爲信任錨點添加到本地Keychain中。搜索「如何創建自簽名x509證書」將返回您可能會覺得有用的內容。