最新消息: 专注SEO优化,不上首页不收费,上首页按天收费,每天6元!

全站HTTPS没你想象的那么简单,电商网站兼顾安全与性能的踩坑小结

  了解详情了解详情  

深深算网络 来源:原创

注:众所周知,数据HTTP明文传输过程中,会遇到如劫持、篡改、监听、窃取等一系列问题,解决这一问题的方法就是做HTTPS改造。

HTTPS的作用是在会话层、表示层引入TLS/SSL握手协议,通过数据加密、解密方式,来应对数据明文传输过程中遇到的问题,保障数据的完整性、一致性,为用户带来更安全的网络体验、更好的隐私保护。

然而,HTTPS增加了TLS/SSL握手环节,再加上应用数据传输需要经过对称加密,对性能提出了更大的挑战。

作为一个好的架构,一定要均衡安全和性能两方面,如果让天秤向任何一方倾斜过多,都会影响较终的用户体验。

因此,为了兼顾安全与性能,苏宁的全站HTTPS改造从2015年底开始进行,历时一年多时间,主要做了系统HTTPS改造、HTTPS性能优化和HTTPS灰度上线这三方面工作,让用户在HTTPS下访问能够获得体验成为了可能。

全站HTTPS方案概述

苏宁易购从2015年开始规划做HTTPS相关的事情,当时可借鉴的资料非常少,电商类网站相关的HTTPS改造的详尽案例更是难求。

如下图,是苏宁易购全站的HTTPS方案:

如图中所示,整个方案分三步构建,分别是系统改造、性能优化和灰度上线:

系统改造。原有系统想要支持HTTPS,必须进行改造,首先要建立HTTPS接入层,也就是开通443端口,让所有的应用系统支持HTTPS访问。

在此基础上做页面资源替换,解决当一个HTTPS页面出现HTTP请求时就会出现错误的问题。做完这两件事,CDN上证书的优化、HTTPS测试方案等问题也就迎刃而解。

性能优化。做系统改造,增加两次TLS握手,必然会对性能造成一定的开销和损失,如何去弥补性能的损失,达到性能和安全兼顾呢?性能优化部分包含若干优化点,下文会详细展开。

灰度上线。这部分是时间花费较多的,HTTPS一步步上线的过程中,踩坑较多,其中部分是前面没有发现的问题。

这证明不能一次性将整个全站、全地区、全用户一次性堆成HTTPS,可以根据流量所处的运营商和城市及用户级别去做灰度上线。

HTTPS方案之系统改造篇

01、HTTPS接入层定义

系统改造的头等大事是开通443端口,成熟的网络系统会包含CDN、硬件负载均衡、应用防火墙、Web服务器、应用服务器,较后到数据层。难道整个链路都要做HTTPS?在每层都增加SSL握手消耗吗?答案是否定的。

所以,应该尽早完成SSL握手,做SSL过程中首要考虑的是HTTPS接入层的定位。

如下图,是苏宁易购架构中HTTPS接入层的位置:

如图中所示,我们把HTTPS接入层放在CDN和应用系统之间,采用四层+七层负载均衡的架构。

四层负载并不优化HTTPS卸载,它的主要职责是做TCP的分发。在七层负载完成整个SSL握手,而后面应用系统走80端口,这样就相当于完成了HTTPS整个卸载的过程。

这样做的好处,一方面,系统应用层面不需要为HTTPS做任何调整;另一方面,将来所有HTTPS的调度、优化和配置都可以在接入层完成。

02、页面资源替换

靠前步,理解MixedContent

对于一个页面而言,请求页面的请求是用HTTPS加载,一旦内部页面元素有HTTP的性质,这时RFC标准里就会出现一个错误,叫MixedContent(混淆错误)。

所以,如果要加载一个安全的HTTPS页面,就不应该在其中混淆HTTP请求。

第二步,//替换

用//替换,这样就可以让页面所有的元素做一个适配,去遵循原来的请求。

第三步,x-request-url的定义和使用

当然,我们在//替换过程中也遇到了一些坑。举个例子,下图是苏宁易购单点登录系统交互的过程:

如图中所示,当用户authID失效,发起请求https://xxx.suning.com/authStatus鉴权,接入层会对所有请求做卸载,地址就会变成HTTP。

未经允许不得转载:深深算网络 » 全站HTTPS没你想象的那么简单,电商网站兼顾安全与性能的踩坑小结

电话咨询
cache
Processed in 0.005433 Second.