尝试对我本地计算机上的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模拟器特有的问题?
答案 0 :(得分:1)
允许任意加载仅覆盖以下内容:
它对自签名证书没有影响。要了解如何使用自签名证书,请阅读Apple开发者网站上的Overriding SSL Chain Validation Correctly。基本上,您实现了自定义身份验证质询处理程序,如果保护空间的身份验证方法不是&#34;服务器信任&#34;,请告知URL加载系统执行默认处理。否则,要么:
一个。检查证书的公钥以确保它是您的,或
B中。修改信任对象并按如下方式对其进行评估:
Apple文档提供了应该有用的详细示例。