iOS APP配置HTTPS流程
发布日期:2016-12-08您的APP启用HTTPS了吗?距离2017年1月1日"苹果iOS强制要求HTTPS连接"还有不到1个月的时间,是否支持HTTPS直接影响APP能否在苹果商店顺利上架。本文将帮助您更快实施HTTPS!
1. 背景
2017年1月1日起,苹果AppStore中的所有App都必须启用 App Transport Security(ATS)安全功能。App TransportSecurity(应用程序安全传输),简称 ATS,是苹果在 iOS 9 中首次推出的一项隐私安全保护功能,启用ATS后,它会屏蔽明文HTTP资源加载,强制App通过HTTPS连接网络服务,通过传输加密保障用户数据安全。ATS在 iOS 9 中是默认开启的,但开发者仍然可以选择关闭 ATS,让自己的应用通过 HTTP 连接传输数据。但从2017年1月1日起,这招将行不通了,所有提交到 App Store 的App必须强制开启 ATS。
2. 影响
100%被拒的情况:
- NSAllowsArbitraryLoads,打开此开关相当于关闭ATS。
- NSExceptionAllowsInsecureHTTPLoads,使用自有网站的HTTP链接。
- NSExceptionMinimumTLSVersion,使用自有网站低于TLS1.2标准的HTTPS链接。
以下几种情况是特例,不会被拒:
- App提供流媒体服务,媒体源已经对内容进行了加密,这时只要使用苹果的AV Foundation框架加载内容,就可以无视ATS。
- App的内容如果有来自已知的第三方,不过最好的做法是和第三方沟通下,敦促他们所有传输都使用TLS1.2加密。
- App的内容来自于不可知的第三方,比如说允许用户通过App访问任意网站,比如说浏览器app,可以忽视ATS。
3. 为什么要用 HTTPS
简单地说,HTTP是明文协议,通过该协议传输的数据处在被窃听、篡改、冒充这三大风险中,已经是非常不安全的传输协议。HTTPS是加密协议,就是在HTTP的基础上开启一条SSL加密通道,让原本明文“裸奔”的数据,从加密通道中密文传输,保证了数据传输的安全性。
目前,全球互联网正在进行从HTTP到HTTPS的大迁移,苹果一向非常关注用户隐私安全,在执行安全策略方面,态度也是非常强硬,实施强制HTTPS加密势在必行。
4. 准备工作
申请一个SSL证书
SSL证书按验证的类别可分:
DV SSL证书(域名验证型):只验证域名所有权,适合个人网站、博客等站点使用;
OV SSL证书(企业验证型):验证网站所属单位身份,适合企业级用户使用;
EV SSL证书(扩展验证型):扩展验证网站所属单位身份,这种证书在浏览器中会显示醒目的绿色地址栏,可信度最高,适合需要用户高度信任的企业级用户使用。
沃通SSL证书由全球信任顶级根签发,支持Windows、安卓、iOS、JDK以及Firefox、Chrome等各类浏览器、操作系统和移动终端,提供不同认证级别的DV SSL证书/OV SSL证书/EV SSL证书,满足不同客户的应用需求。
5. AFN 配置 HTTPS
5.1.项目中的网络交互都是基于AFN,要求AFN版本在3.0及其以上;
5.2.代码部分
设置AFN请求管理者的时候 添加 https ssl 验证。
// 1.获得请求管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 2.加上这个函数,https ssl 验证。
[manager setSecurityPolicy:[self customSecurityPolicy]];
// https ssl 验证函数
- (AFSecurityPolicy *)customSecurityPolicy {
// 先导入证书
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"xxx" ofType:@"cer"];//证书的路径
NSData *cerData = [NSData dataWithContentsOfFile:cerPath];
// AFSSLPinningModeCertificate 使用证书验证模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
//validatesDomainName 是否需要验证域名,默认为YES;
5.3.关于证书
从沃通CA获取到HTTPS证书后,会得到一个有密码的压缩包文件,使用for other server里面的domain.crt的证书文件。
6. 后台服务器配置HTTPS证书(Ngnix)
从沃通CA证书文件压缩包中,打开其中的for Nginx 文件可以看到 2 个文件,包括公钥、私钥。
打开Nginx安装目录下conf目录中的nginx.conf文件找到
#HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
将其修改为 :
server {
listen 443;
server_name localhost;
ssl on;
ssl_certificate sslkey/public.cer; (证书公钥)
ssl_certificate_key sslkey/private.key; (证书私钥)
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1TLSv1.2;
ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
保存退出,并重启Nginx。
通过https方式访问您的站点,确认站点证书安装配置正确。
欢迎咨询沃通CA服务支持团队,为您提供更详尽的 iOS ATS升级方案 和 更专业的技术服务。
相关资讯:
9月13日发布的iOS 10,苹果最终使用HTTPS加密连接进行安全升级。此前,更新升级都是通过HTTP发往终端设备,网络攻击者可能拦截和操纵更新文件。
苹果公司推出IOS9系统,要求HTTP协议全部升级为HTTPS协议,使用户在使用各类APP时,个人隐私信息得到更高级的保护。各大APP开发者可到沃通CA申请免费SSL...
移动互联网火热,APP使用量呈现爆发式增长,但移动APP安全却存在巨大的安全隐患,检测显示90%以上的APP未使用HTTPS加密连接;已启用HTTPS连接的页面,98%不校验证书链和...