https的第四步之业务改造

2018-02-27 11:29:37来源:oschina作者:Mr_Qi人点击

分享
背景

许多小伙伴要问了 你上一篇改造官网https那么快 为啥改造起来业务要这么久时间呢?


是不是偷懒呢???


不是噢!


首先了解一下https和http的加载mixed contend


Mixed Content

在浏览器中,我们将在 HTTPS 网页中所加载的 HTTP 资源称之为 Mixed Content。W3C 规范将 Mixed Content 分成两类,Optionally-blockable Content 和 Blockable Content。


Optionally-blockable Content 是指那些危险较小,即使被中间人篡改也无大碍的资源。现代浏览器默认会加载这类资源,同时在控制台打印出警告信息。


Blockable Content 如果被中间人篡改,则会引发安全问题,浏览器必须禁止加载这类资源。在现代浏览器中,HTTPS 页面中的 JavaScript、CSS、XHR、Font、Iframe 等 HTTP 资源,都会被禁止加载,并直接在控制台打印错误信息。



图片、视频、音频
加载,warning


CSS
不加载,error


JavaScript
不加载,error


Iframe
不加载,error


XHR
不加载,error


Font
不加载,error


HTTPS 页面中的 HTTP 资源


浏览器行为

为啥微信模板在chrome不能使用也是同样的道理



基于上述原因 官网由于没有和任何系统进行http交互【包括但不限于cdn,统计等第三方服务和其他子域名】


因此比较简单 那么对于业务系统来说就没那么简单了~


改造排除所有页面中不应该出现http全部改造成为自适应协议 即用 // 替换 http://
排除所有页面中引入的第三方插件 比如udesk 百度统计 fundebug等等 全部使用自适应协议加载
排除所有页面中的iframe地址全部使用自适应协议加载

由于上述三步会牵涉到比较多的外界资源 比如某个iframe是外部资源 不支持那么就比较麻烦了


或者某些第三方插件不支持https 那么这些资源必须更换成https【可能需要重新实现,比较麻烦】


注意事项

那么除了这个之外还有那些注意事项呢?

单点登录跳转可能存在问题
原先http做cdn的时候我们考虑使用多个域名【可以并发下载】但是由于https握手相当耗时可能此时要做域名收敛

sni的问题 由于我们使用同一台机器做多个域名的证书【单域名】某些浏览器不支持sni可能导致获取不到正确的证书

Icon

随着 IPv4 地址的短缺,为了让多个域名复用一个 IP 地址,在 HTTP 服务器上引入了虚拟主机的概念。服务器可以根据客户端请求中不同的 Host,将请求分配给不同的域名(虚拟主机)来处理。在一个被多个域名(虚拟主机)共享 IP 的 HTTPS 服务器中,当浏览器访问一个 HTTPS 站点时,会首先与服务器建立 SSL 连接。建立 SSL 连接的第一步是请求服务器的证书。服务器在发送证书时,不知道浏览器访问的是哪个域名,所以不能根据不同域名发送不同的证书。

SNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的 SSL/TLS 扩展。它的工作原理是:在连接到服务器建立 SSL 连接之前,先发送要访问站点的域名(Hostname),这样服务器会根据这个域名返回一个合适的证书。

目前,大多数操作系统和浏览器都已经很好地支持 SNI 扩展。OpenSSL 0.9.8 已经内置这一功能,新版的 Nginx 也支持 SNI。


从https跳转到http可能没有refer

Icon 15.1.3Encoding Sensitive Information in URI's

Because the source of a link might be private information or might reveal an otherwise private information source, it is strongly recommended that the user be able to select whether or not the Referer field is sent. For example, a browser client could have a toggle switch for browsing openly/anonymously, which would respectively enable/disable the sending of Referer and From information.

Clients SHOULD NOT include a Referer header field in a (non-secure) HTTP request if the referring page was transferred with a secure protocol.


对于服务器的cpu压力【加解密】
对于前端用户的时间可能延长【合理的规划spdy等技术】
如果后端在使用request.getSchema的时候可能有问题【nginx这一层https但是tomcat仍然是http此时可能只能拿到http】
开发环境是否要考虑呢?【现状是连nginx都没有】
证书对于不同的设备【老旧的android ios】的兼容性
其他暂时还未想到的一些坑!!!

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台