作者:如痴如醉as_961 | 来源:互联网 | 2023-01-17 16:50
我使用"NSMutableURLRequest"租用自签名证书,当使用带有"SecTrustSetAnchorCertificates"的自定义证书锚定证书时,iOS 11失败并显示以下错误消息:
refreshPreferences: HangTracerEnabled: 1
refreshPreferences: HangTracerDuration: 500
refreshPreferences: ActivationLoggingEnabled: 0 ActivationLoggingTaskedOffByDA:0
ATS failed system trust
System Trust failed for [1:0x1c417dc40]
TIC SSL Trust Error [1:0x1c417dc40]: 3:0
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
Task <721D712D-FDBD-4F52-8C9F-EEEA28104E73>.<1> HTTP load failed (error code: -1200 [3:-9802])
Task <721D712D-FDBD-4F52-8C9F-EEEA28104E73>.<1> finished with error - code: -1200
以前适用于iOS 10的内容在IO 11中不再有效.
我知道iOS 11不再支持以下内容:
RC4 3DES-CBC AES-CBC
MD5 SHA-1
<2048位RSA发布密钥 - 与服务器的所有TLS连接
HTTP://
在SSLv3
TLS 1.0
TLS 1.1
除了一个SHA-1指纹外,证书不使用这些,但也列出了SHA-256指纹.
通过添加以下内容,我们可以绕过ATS(App Transport Security)错误:
NSAppTransportSecurity
NSExceptionDomains
mydomain.com
NSIncludesSubdomains
NSExceptionRequiresForwardSecrecy
通过将根/锚证书安装到手机本身也可以在不需要将mydomain.com列入白名单的情况下工作.
这是否意味着ATS不再支持自签名证书?
这曾经在iOS 10中工作:
SecTrustSetAnchorCertificates(serverTrust, (__bridge CFArrayRef)certs);
使用NSMutableURLRequest
在Mac上显示许多故障和安装根证书进入"系统"后密钥库SecTrustSetAnchorCertificates
成功.这是在macOS 10.12.6上完成的.
nscurl --verbose --ats-diagnostics https://
如何使用自定义证书进行此工作,但无需安装证书或将域列入白名单?