2015-12-02 21 views
0

試圖將NSURLConnection創建到本地機器上的VirtualBox VM上的服務器。該服務器是一個帶有自簽名RSA 2048位證書的測試env。允許任意負載在iOS 9.1中不起作用模擬器

Apache的SSL正是如此配置:

SSLProtocol ALL -SSLv2 -SSLv3 
SSLHonorCipherOrder On 
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS 
SSLCompression off 
SSLSessionCache   shmcb:/var/cache/mod_ssl/scache(512000) 
SSLSessionCacheTimeout 300 
<VirtualHost *:443> 
    ServerName mydomain.com 
    DocumentRoot "/var/www/html/example/Web" 
    SSLEngine On 
    SSLOptions +StrictRequire 
    SSLCertificateFile /etc/ssl/certs/server.crt 
    SSLCertificateKeyFile /etc/ssl/private/server.key 
</VirtualHost> 

Wireshark的顯示,客戶端問候和服務器問候發生就好了。但是我們在/usr/bin/nscurl --ats-diagnostics https://example.com --verbose中看到,客戶端應用因爲無效(它是自簽名的;我知道它是無效的)而拒絕服務器的證書。

假設您可以添加「允許任意負載」Info.plist在iOS 9中禁用ATS,但我這樣做了,它什麼也沒做。客戶仍然拒絕自簽名證書。

任何想法,我可以使這項工作?我想也許這是iOS模擬器特有的問題?

回答

1

允許任意負載替換值只會以下:

  • 在HTTP的禁止請求
  • 用於HTTPS

密鑰長度和加密類型要求它有自簽名證書無影響。要了解如何使用自簽名證書,請閱讀Apple開發人員網站上的Overriding SSL Chain Validation Correctly。基本上,您實現了一個自定義身份驗證質詢處理程序,並且如果保護空間的身份驗證方法不是「服務器信任」,則告訴URL加載系統執行默認處理。否則,無論是:

A.檢查證書的公鑰,以確保它是你的,還是

B.修改信任對象,並按照如下方式評價它:

  1. 提供的副本證書在您的應用程序。
  2. 加載證書。
  3. 其添加爲信託對象
  4. 評估對象的信任錨,

蘋果文檔提供了詳細的例子,應該幫助。

相關問題