首先,我们先了解什么是SSL证书。SSL(Secure Sockets Layer, 安全套接字层),目前互联网的传输多使用HTTP 协议明文传输,而明文传输存在很多缺点,比如传输内容会被偷窥(嗅探)和篡改。而SSL 协议的作用就是在传输层对网络连接进行加密。
什么是HTTPS?简单来说,HTTPS = HTTP + SSL/TLS, 也就是 HTTP over SSL 或 HTTP over TLS,这是后面加 S 的由来 。
HTTPS和HTTP异同:HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。HTTP的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
而苹果IOS在早前就宣布,到2017年1月1日 App Store中的所有应用都必须启用 App Transport Security安全功能。App Transport Security(ATS)是苹果在iOS 9中引入的一项隐私保护功能,屏蔽明文HTTP资源加载,连接必须经过更安全的HTTPS。苹果目前允许开发者暂时关闭ATS,可以继续使用HTTP连接,但到年底所有官方商店的应用都必须强制性使用ATS。
所以对于iOS开发者来说,需要尽早解决HTTPS请求的问题。发送HTTPS请求信任SSL证书和自签名证书,分为三种情况:
1.如果你的app服务端安装的是SLL颁发的CA,可以使用系统方法直接实现信任SSL证书,关于Apple对SSL证书的要求请参考:苹果官方文档CertKeyTrustProgGuide
这种方式不需要在Bundle中引入CA文件,可以交给系统去判断服务器端的证书是不是SSL证书,验证过程也不需要我们去具体实现。
当然,如果你需要同时信任SSL证书和自签名证书的话还是需要在代码中实现CA的验证,这种情况在后面会提到。
基于AFNetWorking的SSL特定服务器证书信任处理,重写AFNetWorking的customSecurityPolicy方法。这样,就能够在AFNetWorking的基础上使用HTTPS协议访问特定服务器,但是不能信任根证书的CA文件,因此这种方式存在风险,读取pinnedCertificates中的证书数组的时候有可能失败,如果证书不符合,certData就会为nil。
3.更改系统方法,发送异步NSURLConnection请求。重点在于处理NSURLConnection的didReceiveAuthenticationChallenge代理方法,对CA文件进行验证,并建立信任连接。这里的关键在于result参数的值,根据官方文档的说明,判断(result == kSecTrustResultUnspecified) || (result == kSecTrustResultProceed)的值,若为1,则该网站的CA被app信任成功,可以建立数据连接,这意味着所有由该CA签发的各个服务器证书都被信任,而访问其它没有被信任的任何网站都会连接失败。该CA文件既可以是SLL也可以是自签名。
2017年1月1日起,苹果商店AppleStore应用将强制使用HTTPS。iOS开发者需要对HTTPS进行全面的了解,方能明白HTTPS对于IOS的重要意义。
首先,我们先了解什么是SSL证书。SSL(Secure Sockets Layer, 安全套接字层),目前互联网的传输多使用HTTP 协议明文传输,而明文传输存在很多缺点,比如传输内容会被偷窥(嗅探)和篡改。而SSL 协议的作用就是在传输层对网络连接进行加密。
什么是HTTPS?简单来说,HTTPS = HTTP + SSL/TLS, 也就是 HTTP over SSL 或 HTTP over TLS,这是后面加 S 的由来 。
HTTPS和HTTP有何不同:
HTTP和HTTPS使用的是完全不同的连接方式;
端口不同:HTTP是80,HTTPS是443;
HTTP的连接很简单,是无状态的;
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全;
而苹果IOS在早前就宣布,到2017年1月1日 App Store中的所有应用都必须启用 App Transport Security安全功能。App Transport Security(ATS)是苹果在iOS 9中引入的一项隐私保护功能,屏蔽明文HTTP资源加载,连接必须经过更安全的HTTPS。苹果目前允许开发者暂时关闭ATS,可以继续使用HTTP连接,但到年底所有官方商店的应用都必须强制性使用ATS。
所以对于iOS开发者来说,需要尽早解决HTTPS请求的问题。发送HTTPS请求信任SSL证书。
天威诚信AppleStore ATS应对方案:
★确保与App通讯的所有服务器均提前部署HTTPS加密,绝对不能使用app的 Info.plist设置禁用 ATS;
★多个应用或多个服务器后台地址,需合理规划服务器部署,进行域名收敛以节约成本、方便管理;
★根据企业需求选择适合自己的SSL证书;
★安装新版Web Server程序,启用TLSv1.2版本协议;
★优化配置Ciphers,支持完全正向加密技术;
★选择权威授权CA认证机构天威诚信,获取sha256算法证书;
★更新应用接口,使用HTTPS通讯接口;
★除ATS已知的许可策略以外,启用服务端应用的全站HTTPS优化;
★使用CIM证书智能管理系统,轻松管理服务器证书;