要求:如果使用ats 又不满足以下标准则请求被中断并返回nil
• The protocol Transport Security Layer (TLS) must be at least version 1.2.
支持至少tls 1.2版本协议
• Connection ciphers are limited to those that provide forward secrecy (see the list of ciphers below.)
支持forward secrecy的加密算法
* TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
* TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
* TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
* TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
* TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
* TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
* TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
* TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
• Certificates must use at least an SHA256 fingerprint with either a 2048 bit or greater RSA key, or a 256 bit or greater Elliptic-Curve (ECC) key.
证书使用sha256的指纹与任意一个2048位或者更高位的rsa秘钥,或者256位或者更高位的ecc秘钥
app配置属性:
• NSAppTransportSecurity
• NSAllowsArbitraryLoads (true/false 是否禁用ats)
• NSExceptionDomains (启用ats的时候对额外的域名作单独处理)
• NSIncludesSubdomains (true/false 子级域名是否相同设置)
• NSExceptionRequiresForwardSecrecy (true/false 是否支持正向保密)
• NSExceptionAllowsInsecureHTTPLoads (true/false 是否允许访问无证书或者证书无效的域名)
iOS 9 如果开启ats,则需要用https请求,否则需要另作说明
iOS 10 如果开启ats, 通过使用 WebKit 中的 WKWebView 并使用 NSAllowsArbitraryLoadsInWebContent 则可以在web进行http请求