允许任意加载在iOS 9.1模拟器中不起作用

时间:2015-12-02 05:46:52

标签: ios9 nsurlsession

尝试对我本地计算机上的VirtualBox VM上的服务器进行NSURLConnection。该服务器是一个带有自签名RSA 2048位证书的测试环境。

如此配置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 个答案:

答案 0 :(得分:1)

允许任意加载仅覆盖以下内容:

  • 禁止HTTP请求
  • HTTPS的密钥长度和加密类型要求

它对自签名证书没有影响。要了解如何使用自签名证书,请阅读Apple开发者网站上的Overriding SSL Chain Validation Correctly。基本上,您实现了自定义身份验证质询处理程序,如果保护空间的身份验证方法不是&#34;服务器信任&#34;,请告知URL加载系统执行默认处理。否则,要么:

一个。检查证书的公钥以确保它是您的,或

B中。修改信任对象并按如下方式对其进行评估:

  1. 在您的应用中提供证书的副本。
  2. 加载证书。
  3. 将其添加为信任对象
  4. 中的锚点
  5. 评估信任对象
  6. Apple文档提供了应该有用的详细示例。