什么是ATS (iOS)?
App Transport Security(ATS)是苹果在iOS 9及更高版本中引入的一项安全特性,旨在强制应用通过HTTPS(而不是HTTP)连接网络服务,以确保数据传输的安全。以下是ATS的一些关键点:
- 默认启用:在iOS 9及以上版本中,默认启用ATS,要求应用的所有网络请求都必须通过HTTPS进行。
安全要求:ATS要求应用的HTTPS连接必须满足以下条件:
- 必须使用TLS 1.2版本的加密协议。
- 必须使用AES-128或AES-256对称加密算法。
- 必须支持正向保密(Forward Secrecy),使用ECDSA密钥交换。
- 服务端的叶证书签名密钥必须符合特定要求。
- 自定义配置:如果需要,开发者可以在应用的Info.plist文件中自定义ATS配置,例如允许特定的不安全连接或为特定域名设置例外。
- 影响:从2017年1月1日起,苹果要求所有新上线或更新的应用都必须支持ATS安全标准。
- 适配ATS:如果应用需要访问非ATS安全标准的服务,可以在Info.plist中添加例外,但在审核时需要提供合理的理由。
- 性能和安全性:ATS通过减少连接次数和强制使用加密连接,可以提高应用的性能并增强安全性。
- 证书透明度:ATS还支持Certificate Transparency,要求服务器证书必须有有效的签名证书透明度时间戳。
确保服务器满足ATS最低要求
服务器必须使用受信任的CA签发的证书,主要包括:
具有完整的数字签名,表明证书未被篡改。
证书没有过期。
证书域名与访问域名匹配。
该证书必须由证书颁发机构 (CA) 颁发。如iOS 中可用的受信任根证书列表中所示。
ATS 需要的安全检查:
服务器证书必须使用至少 2048 位的 (RSA) 密钥或至少 256 位的椭圆曲线加密 (ECC) 密钥进行签名。
证书必须使用具有至少 256 位(即 SHA-256 或更大)的摘要长度(有时称为指纹)的安全散列算法 2 (SHA-2 )。
连接必须使用传输层安全 (TLS) 协议版本 1.2 或更高版本。
必须使用 AES-128 或 AES-256 对称密码交换数据。
链路必须通过椭圆曲线 Diffie-Hellman Ephemeral (ECDHE) 密钥交换支持完美前向保密 (PFS)。