APP升级到HTTPS流程详解

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%被拒的情况:

  • 使用自有网站的HTTP链接
  • 使用自有网站低于TLS1.2标准的HTTPS链接。

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

  • App提供流媒体服务,媒体源已经对内容进行了加密,这时只要使用苹果的AV Foundation框架加载内容,就可以无视ATS;
  • App的内容如果有来自已知的第三方,可以暂时不用管,让技术设置一下ATS的开关,不过最好的做法是和第三方沟通下,敦促他们所有传输都使用TLS1.2加密。这一条适用于微信的公众号开发。
  • App的内容来自于不可知的第三方,比如说允许用户通过App访问任意网站,比如说浏览器app,可以忽视ATS。如果使用框架是WebKit,苹果建议切换到Safari,否则今后可能还会有麻烦事。
3. HTTP和HTTPS的区别:

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

Paste_Image.png

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

Paste_Image.png

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

  • 浏览器将通过网络发送请求安全会话的消息(通常请求以 https 而非 http 开头的 URL)。
  • 服务器通过发送其证书(包括公钥)进行响应。
  • 浏览器将检验服务器的证书是否有效,并检验该证书是否是由其证书位于浏览器的数据库中的(并且是可信的)CA 所签发的。它还将检验 CA 证书是否已过期。
  • 如果证书有效,浏览器将生成一个==一次性的、唯一的==会话密钥,并使用服务器的公钥对该会话密钥进行加密。然后,浏览器将把加密的会话密钥发送给服务器,这样服务器和浏览器都有一份会话密钥。
  • 服务器可以使用其专用密钥对消息进行解密,然后恢复会话密钥。

4.开始配置HTTPS

4.1 准备工作
  • 有网站,有服务器,有域名;
  • 申请到一个 SSL 证书;
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 申请证书

按验证的类别分:

  • 域名认证(Domain Validation):认证你的域名所有权和网站,申请验证简单,几分钟即可。
  • 组织机构认证(Organization Validation):认证的域名和公司信息需要提交公司资料认证。
  • 扩展认证(Extended Validation,简称EV):这种证书会在浏览器中出现“很明显”的绿色地址栏,给用户的可信度最高。有安全评估保证。

个人或小站点可用一类或二类,企业一般用二类认证,少数企业会用到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月生效

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容