[关闭]
@wwanghee 2016-07-25T02:16:30.000000Z 字数 1299 阅读 685

【腾讯项目】HTTPS相关及接入指引


一、背景

1、Apple 表示将继续在 iOS 10 和 macOS 10.12 里收紧对普通 HTTP 的访问限制。从 2017 年 1 月 1 日起,所有的新提交 app 默认是不允许使用 NSAllowsArbitraryLoads 来绕过 ATS 限制的,也就是说,我们最好保证 app 的所有网络请求都是 HTTPS 加密的

2、为HTTP/2铺路,HTTP/2是建立在HTTPS基础之上的,HTTP/2的最大优点就是所有通信都是在一个TCP连接上完成,等部署完成之后,我们的代码可以这样写:

image_1ao9a3pjiq2vgapkc21nut14cs9.png-205.8kB

基于此背景,我们将对业务进行https的改造和升级。

二、关于HTTPS的调试

工欲善其事,必先利其器,我们的抓包工具Fiddler要支持HTTPS的调试,还需要配置一番。如下图所示:

image_1ao9a81gn1l501npl1jgnmnk14g5m.png-61.3kB

并且需要在手机端安装证书:

image_1ao9acmvjpk91p4h1u7f1pjfc4t13.png-65.8kB

在手机端的浏览器输入Fiddler代理的IP以及端口号,例如我的代理是:
192.168.191.1:8080,则会出现此界面,然后点击红框部分下载Fiddler根证书并根据提示进行安装。

至此Fiddler即可对HTTPS进行抓包了。

三、HTTPS接入过程中遇到的问题

接入HTTPS并不是一帆风顺的,其中也是历经坎坷,俗称「踩坑&填坑」。这里讲述一下遇到的问题,有遇到同样问题的同学可以借鉴。

1、gxh.vip.qq.com证书配错

证书之前配错了,如下图所示:

image_1ao9aqe5a1mloesqba191n1iac1g.png-54.6kB

目前已经改正:

image_1ao9bbckaisr1g9617halvurni1t.png-47.9kB

2、访问商城出现间歇性403,服务器拒绝访问

image_1ao9bgu58ior16p61tqf1ainqgc2a.png-70.8kB

最后查出原因是Fiddler的WILLOW插件存在BUG,在转发过程中改变了请求头,导致服务器拒绝访问。

解决方法:

1、不使用WILLOW插件作为改HOST工具,可以使用其它HOST切换工具替代。

2、可以使用目录替换的方式,不使用本地服务器的方式。

目前也联系了WILLOW的维护者,跟进此问题。

3、CSP配置条件放宽

目前线上严格的CSP配置会拒绝所有非HTTPS的请求(同源策略的影响),所以改造了CSP的配置,暂时放宽部分http的请求,保证项目过渡阶段正常运行。

4、inline插件改造

我们的构建工具inline插件已经兼容https,可以正常使用

5、CGI访问400

image_1ao9buis9l3g1gmjqpg1rnk99m2n.png-92.8kB

原因是web server配置跨域头的设置有问题导致,目前运维同学已修复此问题。

四、项目如何接入https

1、所有请求http://改为//,兼容http及https

2、替换域名,替换规则如下:

CDN域名:
imgcache.qq.com->gxh.vip.qq.com
imgcache.gtimg.cn->gxh.vip.qq.com
i.gtimg.cn->gxh.vip.qq.com

CGI域名:
logic.content.qq.com->g.vip.qq.com
pay.content.qq.com->gpay.vip.qq.com

五、目前还存在及需要跟进的问题

1、https下,jsbridge有问题(目前定位到是终端问题)

2、http://gxh.vip.qq.comhttps://gxh.vip.qq.com对于同样的资源访问结果不一致(目前让运维同学跟进中)

3、https下,sso有异常(目前还在定位中)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注