2017-07-06 486 views
18

在我們的內部網絡上,我們使用自簽名CA證書。多年來,Safari和我們的iOS產品都一直運行在iOS 10下。我們只需在任何新設備或模擬器上安裝CA證書,即使使用ATS,也可以正常工作。這允許訪問我們所有的內部測試服務器,而不必單獨信任每個服務器。iOS 11安裝的證書不能自動信任(自簽名)

與iOS 11安裝CA證書開始不再允許Safari或我們的應用程序信任證書的任何服務器。我們收到了我們的應用程序啓用了CFNETWORK_DIAGNOSTICS下列有關細節:

錯誤域= kCFErrorDomainCFNetwork代碼= -1200
_kCFNetworkCFStreamSSLErrorOriginalValue = -9802
_kCFStreamErrorDomainKey =
_kCFStreamErrorCodeKey = - 已發生9802
NSLocalizedDescription =一個SSL錯誤和安全連接的服務r不能製造。
NSLocalizedRecoverySuggestion =你想不想連接到服務器?

我花了相當多的時間試圖解決這個問題,淘洗StackOverflow和其他網絡。儘管我們在我們的應用中使用AFNetworking,但似乎並不相關,因爲Safari不再通過CA信任這些服務器。通過NSAllowsArbitraryLoads禁用ATS允許訪問服務器,但顯然不是解決方案。

我們的-URLSession:didReceiveChallenge:completionHandler代碼沒有變化,我們通過challenge.protectionSpace.serverTrust有一個適當的(工作多年)挑戰響應的實現。

我已經重新評估,並檢測了兩個CA和服務器證書各種方式我能想到的,他們無處不在,除了工作的iOS 11.什麼可能在ATS已經改變了11的iOS可能會導致這個問題?

+0

我們的QA團隊報告說,任何更新到iOS 11的Apple設備都不能再使用Safari或Chrome訪問任何內部https站點。接受已經工作了多年並繼續與未升級的設備一起工作的自簽名證書的正常方式不再有效。看起來像很多人都有同樣的問題https://twitter.com/jfsiman/status/910269395959795712 – rob

回答

18

在寫這個問題,我發現了答案。從Safari安裝CA不再自動信任它。我必須從證書信任設置面板手動信任它(也在this question中提到)。

enter image description here

我爭論取消的問題,但我認爲它可能是有幫助的一些相關的代碼和日誌細節有人可能會尋找。此外,我從來沒有遇到過這個問題,直到iOS 11。我甚至回去並重新確認它可以自動通過iOS 10運行。

我以前從未需要觸摸該設置面板,因爲任何已安裝的證書都是自動信任的。也許它會在iOS 11發佈時改變,但我對此表示懷疑。希望這可以幫助我省下浪費時間的人。

如果有人知道爲什麼這表現不同對一些人在不同版本的iOS,我很樂意在評論就知道了。

+3

嗨那裏 - 不幸的是我的證書沒有出現在證書信任設置 - 你有什麼建議嗎? – user3601148

+1

如果證書是阻止類型,證書可能不會顯示在證書信任設置中。 – Stoull

+2

不錯的發現 - 注意到iOS 10.3以後就是這種情況。以下是來自蘋果的相關支持條目:https://support.apple.com/en-au/HT204477 – F3CP

1

這發生在我身上也undating到IOS11在我的iPhone之後。當我嘗試連接到公司網絡時,它會提出公司證書並表示它不被信任。我按「信任」按鈕,連接失敗,證書不會出現在可信任的證書列表中。

1

蘋果手三類證書:Trusted,Always AskBlocked。如果您的證書類型爲BlockedAlways Ask列表,您將遇到此問題。在Safari上顯示它的喜歡: enter image description here

,你可以找到關於設置Always Ask證書>常規>類型關於>證書信任設置

還有就是List of available trusted root certificates in iOS 11

Blocking Trust for WoSign CA Free SSL Certificate G2

+0

設置中沒有選項讓我始終信任證書? – aleclarson

+0

由於更新我的iphone6到iOS 11,我一直遇到這個問題。證書由godaddy提供(我無法控制)。上網的唯一方法是首先忘記網絡,然後輸入憑證,然後信任證書。證書沒有顯示在證書信任設置中,我看不到添加證書的方式。下次登錄網絡時,如果我不先忘記網絡,首先會提示我信任證書,然後詢問憑證,然後再次要求信任證書,但錯誤會變爲登錄密碼無效。 – rockhammer

3

推薦的解決方案是安裝並信任一個自簽名證書(根)。假設您創建了自己的CA,並且認證的層次結構正確,則不需要更改服務器信任評估。建議這樣做,因爲它不需要對代碼進行任何更改。

  1. 生成CA和證書(您可以使用OpenSSL:Generating CA and self-signed certificates
  2. 根證書(* .CER文件)的設備上安裝 - 您可以通過Safari瀏覽器打開它,它應該重定向設置
  3. 當認證安裝,到證書信任設置(設置>常規>關於>證書信任設置)在MattP答案。

如果是不可能的,那麼你需要改變服務器的信任評價。

本文檔中的更多信息:Technical Q&A QA1948 HTTPS and Test Servers

+0

我不知道#3。非常感謝!我尋找的時間比我想要的要長得多。 – adrum

+0

#3伎倆。謝謝! –

+0

謝謝!我花了幾個小時試圖弄清楚爲什麼我自己的CA簽署的服務器證書只在iOS上不受信任。證書沒有錯。它是#3以上。我想知道爲什麼信任設置不適用於iOS設置的CA配置文件區域。 –

相關問題