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