开发杂谈iOS精华文章配置

APP升级到HTTPS流程详解

2016-11-18  本文已影响4248人  秋雨W
1. 背景

2017年1月1日起,苹果App Store中的所有App都必须启用 App Transport Security(ATS)安全功能。App Transport Security(应用程序安全传输),简称 ATS,是苹果在 iOS 9 中首次推出的一项隐私安全保护功能,启用ATS后,它会屏蔽明文HTTP资源加载,强制App通过HTTPS连接网络服务,通过传输加密保障用户数据安全。ATS在 iOS 9 中是默认开启的,但开发者仍然可以选择关闭 ATS,让自己的应用通过 HTTP 连接传输数据。但从2017年1月1日起,这招将行不通了,所有提交到 App Store 的App必须强制开启 ATS。

2. 影响

2.1 100%被拒的情况:

2.2以下几种情况是特例,不会被拒:

3. HTTP和HTTPS的区别:

HTTP:当客户端发送请求,那么服务器会直接返回数据。

Paste_Image.png

HTTPS:当客户端第一次发送请求的时候,服务器会返回一个包含公钥的受保护空间(也成为证书),当我们发送请求的时候,公钥会将请求加密再发送给服务器,服务器接到请求之后,用自带的私钥进行解密,如果正确再返回数据。这就是 HTTPS 的安全性所在。

Paste_Image.png

更加详细的过程:
       当浏览器(客户端)需要与某个安全站点建立连接时,先建立TCP连接(三次握手),然后发生 SSL会话握手。

4.开始配置HTTPS

4.1 准备工作
4.2 生成证书的申请文件:

1.先通过 openssl 工具创建一个私钥文件mydomain.key。

sudo openssl genrsa -des3 -out mydomain.key 1024

不同的证书是可能有加密位数不同的,这里用的是 1024,但有可能是 2048;
这个 openssl 工具在 windows 和 linux 上面都可以用。

2.然后我们通过下面的命令生成申请文件 (mydomain.csr)。

sudo openssl req -new -key mydomain.key -out mydomain.csr

这个 csr 文件在向证书颁发机构申请证书的时候需要提交,需要根据上一步的私钥才能产生,然后会需要输入下面一系列的信息:

Paste_Image.png

最终生成好 csr 申请文件,就可以开始申请证书了。

4.3 申请证书

按验证的类别分:

个人或小站点可用一类或二类,企业一般用二类认证,少数企业会用到EV认证。
看了看网上SSL证书的价格,便宜的一般都是10美元左右一个子域名/每年,按不同类别、不同品牌等价格在几十美元到几百美元一年。比如能显示绿色地址栏的EV证书和通配符证书贵一些。国内自己的或代理的,比国外贵不少,动辄几千元。其实就是由可信源认证了一下,类似于办证,用起来没什么差别,并非越贵越好。

国外常见的SSL提供商有:Thawte,Go Daddy,VeriSign,RapidSSL,GeoTrust(QuickSSL),StartSSL。
StartSSL、Go Daddy的比较便宜,GeoTrust的价格适中,Thawte和VeriSign的价格较贵。

其中StartSSL的价格是119.8美元/年
https://www.startssl.com/

Paste_Image.png

Go Daddy的价格是669人民币/年
https://sg.godaddy.com/zh/web-security/ssl-certificate/ov-ssl-certificate

Paste_Image.png

最终我们会得到一个.crt证书文件。凭着手上已经注册好的 mydomain.crt 证书和 mydomain.key 私钥文件,就可以在我们的 http 服务上面配置 SSL 了。

5. Nginx ****配置启用**** SSL

5.1 在原有的虚拟主机 server 段配置上修改端口为 443,然后加入如下三行 SSL 配置:

server {
listen 443;
ssl on;
ssl_certificate /var/ssl/mydomain.crt;
ssl_certificate_key /var/ssl/mydomain.key;
}

5.2新增一个 server 段侦听同样域名上的 80 端口,直接 301 跳转到 https 协议上的地址:

server {
listen 80;
server_name www.mydomain.com mydomain.com;
rewrite ^/(.*)$ https://$host/$1 permanent;
}

5.3然后重启一下 Nginx,这时候会要求输入私钥的密码,日后每次重启 Nginx都需要这一步。
至此就配置完毕了。

参考文档:
SSL证书与Https应用部署小结
HTTPS(SSL) 升级实践手札
iOS应用网络安全之HTTPS
iOS - HTTPS
StartSSL免费SSL证书成功申请
App上架重磅通知:App Store安全新规17年1月生效

上一篇 下一篇

猜你喜欢

热点阅读