百度全站HTTPS,怎么做的?

Posted 高效运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了百度全站HTTPS,怎么做的?相关的知识,希望对你有一定的参考价值。

作者介绍:

百度全站HTTPS,怎么做的?

林孟祥

现任职百度。2007到2014年,工作于IBM中国创新中心,任解决方案架构师等,主要研究新媒体技术、大规模分布式系统和高性能计算技术与行业客户业务流程的结合创新,期间发表数篇专利。

一、为什么必须升级为HTTPS?

HTTP协议被广泛使用,对互联网发展贡献巨大,互联网从最初媒体和内容平台,进化为连接人与服务、完成交易闭环生态的平台,尤其是“互联网+”的时代,互联网上交互的数据变得更为隐私和重要,HTTP逐渐暴露出不足:

  1. HTTP 协议通信过程是明文的,而TCP/IP协议本质上是基于存储转发机制而工作,从服务器端口到浏览器之间数据链路中,各种中间环节(比如代理,网关,路由器,WIFI热点,恶意驱动程序,恶意浏览器插件等等)可以轻易的监听和修改途经的数据报,导致信息的泄露和恶意篡改。

  2. HTTP协议没有用户和网站的身份验证机制,用户在浏览器上敲入的网址, 有可能被DNS劫持,从而导致用户浏览器被导向了伪造的网站,用户和伪造的服务器通信,重要信息如账号密码被骗取。

  3. HTTP通信过程被恶意劫持和篡改,但是普通用户无法分辨,会把所有问题归咎于网站或者APP开发者, 对网站和APP的正常经营和品牌造成不利影响。

  4. 黑客在HTTP通信过程中,插入恶意代码或病毒,进行双向入侵和攻击。

以某SaaS产品为例,2015年此产品商户侧PC端遭遇3次页面内容劫持,在用户使用过程中,页面中出现被恶意插入的广告和JS代码,影响页面正常功能,导致商户的后台系统无法正常使用,影响商户业务流程,导致用户投诉和退款。

据统计,在2015年Q3季度中,此产品用户端APP抽样劫持率在2-3%。

如何应对HTTP劫持?

越来越多的互联网应用选择全站HTTPS解决方案。从全球来看,全站HTTPS是一条必经路线。

互联网金融,电商,互联网支付行业早就使用全站HTTPS来提高应用的安全性。

  • 2015年3月,百度宣布进入全站HTTPS时代,将所有对百度搜索访问变为加密状态。百度成为中国第一个进入全站HTTPS的互联网公司。

  • 2015年5月,百度搜索引擎全面支持收录HTTPS站点,并在排名上优先对待。

  • 2015年7月,阿里巴巴旗下淘宝、天猫全站启用HTTPS,成为中国首家进入全站HTTPS的电商平台。

  • 2016年6月,苹果公司宣布到2017年1月1日 App Store中的所有应用都必须启用 App TransportSecurity安全功能。

    App Transport Security(ATS)是苹果在ios 9中引入的一项隐私保护功能,屏蔽明文HTTP资源加载,连接必须经过更安全的HTTPS。

作为互联网应用基础的云平台,在云产品中为租户提供便捷可靠的HTTPS功能,应对恶劣的互联网环境,既重要也必要。

二、百度全站HTTPS,怎么做的?

关于HTTPS协议的工作机制,网上已经有很多文章介绍,这里就不再赘述。这里我们以百度全站HTTPS为例,介绍当要把一款互联网应用升级为全站HTTPS时,会遇到哪些问题,以及一些解决方法。

挑战一:应对兼容性

从1995年Netscape 公司发布SSL协议至今, HTTP协议从1.0 普及为 HTTP1.1,HTTP2.0也在普及中。

安全传输层协议也历经SSL v2.0, SSL v3.0, TLS 1.0, TLS 1.1, TLS 1.2 五个版本 TLS1.3很快就会推出, 尽管SSL v2.0, SSL v3.0 和 TLS 1.0 已经发现存在安全漏洞,逐渐在新版的操作系统和新版浏览器中停止支持。

但由于国情的原因,中国市场上仍有少量(大约 2 % 左右)古老的浏览器在使用这些带有缺陷的加密传输协议。

百度全站HTTPS,怎么做的?

图1. 2016年1月至 2016年7月中国市场PC端浏览器份额(数据来源百度统计)

百度全站HTTPS,怎么做的?

百度全站HTTPS,怎么做的?
图2. 2016年1月至 2016年7月中国市场PC端操作系统份额(数据来源百度统计)

挑战一的解决之道:

对于小型互联网应用,由于用户比较少,放弃对老版本系统和浏览器的支持,要求用户升级到推荐的版本不会有太大的问题,但是对于拥有每天近百亿PV的大型网站和应用,显然放弃对这一部分古老浏览器的支持,流量损失是非常巨大的。

所以大型互联网应用在升级为HTTPS时,要考虑到对低版本系统的兼容性。比如服务降级,对不支持高版本TLS的访问进行降级处理,使其使用低版本的HTTPS协议;同时支持 SHA-1和SHA-256, 提升算法兼容性; 对于实在无法使用HTTPS的用户,对其访问进行302跳转,恢复普通HTTP访问。

挑战二:应对处理延迟与并发性下降

在忽略DNS解析过程的情况下,在HTTP协议下,只要完成TCP 3次交互就可以开始发送请求,返回结果。HTTPS由于加入证书校验,密钥协商等复杂环节,根据缓存命中状态,交互次数会增加3-7倍不等。

在不做优化的情况下,会带来250-500ms的延迟,对于比较差的页面可能会恶化500-1200ms。

同时,各种对称、非对称和散列算法耗费计算时间,又会加入几十毫秒的延迟。 由于非对称加解密非常耗费计算资源,还会带来服务器并发性能的下降。

假设在使用HTTP时, CPS可以达到2万多 的网站,使用HTTPS后,CPS会下降为2-3千左右。

挑战二的解决之道:

为了处理延迟和计算量激增,不给用户体验带来明显影响,大型网站会从通信协议、加密算法、后端架构、流量调度、前端页面、运维管理更方面进行优化,姿势如下。

1、 在协议层对兼容的客户端尽量使用  TCP fast open(TFO RFC7413) 、HSTS、Session Cache、Session Ticket、Ocsp stapling、False start、SPDY/HTTP2 等技术来减少握手次数,减少跳转次数,提升连接复用比例。

百度全站HTTPS,怎么做的?
图3. 协议层优化

2、在应用层做预连接,在网页端或者客户端用户发起访问请求之前提前把这个握手 过程完成,减少延迟。

3、在算法方面,性能优化上优先使用ECC。这里使用ECC密钥长度大小要比RSA和DH密钥长度短。

4、在后端架构上则可以使用SSL硬件加速集群做SSL卸载。

百度全站HTTPS,怎么做的?
图4. 带有SSL硬件加速集群的架构

下图为实验环境中,使用SSL硬件加速处理和没有使用硬件加速时候服务器处理HTTPS访问的性能对比,可以看到使用硬件加速,服务器的并发度得到数倍的提升,同时降低了服务器CPU负载,极大减少响应时间。

百度全站HTTPS,怎么做的?
图5. SSL硬件加速效果实验

挑战三:应对HTTPS攻击

1、防止协议降级攻击

降级攻击一般包括两种:加密套件降级攻击 (cipher suite rollback) 和协议降级攻击(version roll back)。

降级攻击的原理就是攻击者伪造或者修改 client hello 消息,使得客户端和服务器之间使用比较弱的加密套件或者协议完成通信。

解决之道:为了应对降级攻击,现在 server 端和浏览器之间都实现了 SCSV 功能(原理参考

2、防止重新协商攻击

重新协商(tls renegotiation)分为两种:加密套件重协商 (cipher suite renegotiation) 和协议重协商(protocol renegotiation)。重新协商会有两个隐患:

*重协商后使用弱的安全算法。这样的后果就是传输内容很容易泄露。

*重协商过程中不断发起完全握手请求,触发服务端进行高强度计算并引发服务拒绝。

解决之道:对于重协商,最直接的保护手段就是禁止客户端主动重协商,当然出于特殊场景的需求,应该允许服务端主动发起重协商。

挑战四:所有前端页面涉及到的资源都要支持HTTPS

HTTPS 的目的就是保证传输过程的安全,如果只有主域名上了 HTTPS,但是主域名加载的资源,比如 js,css,图片没有上 HTTPS,浏览器会向用户告警,阻止用户继续访问页面。

如果用户强制继续访问,从效果上来说,没有达到保证网站传输过程安全的目的,因为你的 js,css,图片仍然有被劫持的可能性,如果这些内容被篡改/ 嗅探了,那么 HTTPS 的意义就失去了。

挑战四的解决之道:

实际上对于不同的站点来说,HTTPS 的部署方式和难度有很大的区别。

百度全站HTTPS,怎么做的?
图6. 前端页面HTTPS改造关键点

三、中小网站怎么免费享受到百度的福利?

看了百度的实践,是不是觉得全站HTTPS是个艰巨的工程,整个人的心情都不好了?

以前要想对Web应用进行HTTPS改造,需要经过生成公私钥,创建证书申请,申请证书,开启负载均衡、服务器和CDN上的HTTPS功能,部署证书和私钥,优化性能等等繁琐的步骤。

那么,有更优雅的办法不,而且省钱、快捷?

您可以试试百度开放云,而且据说:

  1. 免费申请、免费复用百度经验

  2. 无需源站改造,一步即可

  3. 动态添加,即时生效

  4. 租户证书私钥传输和存储全部加密

  5. 兼容HTTP请求处理,免除后顾之忧

  6. 灵活发布,回源的SSL协议版本随意切换

是不是感觉碉堡了…?

上述这些都是真的!因为已经在7月13日的百度开放云发布会上,由百度开放云总经理刘炀正式宣布。

百度全站HTTPS,怎么做的?

“0成本申请证书,1键部署证书”

从申请证书到部署的全过程,在保证安全的前提下进行了最大的简化,负载均衡BLB、内容分发网络CDN,百度应用引擎 BAE、开放云物联网IOT产品,对象存储BOS,大数据产品都已全面支持HTTPS/SSL协议加速和自动化部署,方便广大用户打造更加安全的互联网应用。

多说一句:

百度开放云和百度云是两个不同的产品分属不同部门,百度云是面向个人终端用户提供的云存储服务(俗称网盘),而百度开放云是百度技术体系基于16年互联网基础架构实践,以及对20多款用户过亿产品的支持经验,结合百度大数据和人工智能技术,统一对外进行技术开放与生态合作的平台。

百度全站HTTPS,怎么做的?

请您不要搞错了哇。。。关于如下二维码您可以了解更多。

百度全站HTTPS,怎么做的?

更直接的交流方法

如果想了解更多HTTPS等技术内幕或百度开放云更多相关信息,请扫描进群。

百度全站HTTPS,怎么做的?

如果上述群已满,您无法直接扫码加入,可以再试试如下2群,请注意不要重复加入,以免被请出来。

如果上述两个群都无法直接加入,请扫码并添加如下同学为您的微信好友,并备注”百度技术讨论“,该同学负责请您入群。

您也可以直接点击如下“阅读原文”链接,以了解更多。

以上是关于百度全站HTTPS,怎么做的?的主要内容,如果未能解决你的问题,请参考以下文章

百度全站切换https,技术宅告诉你为什么搜索更安全了

百度全站 https FAQ:技术宅告诉你如何搜索更安全

https建立连接的的过程是怎么样的

HTTPS抓包详细分析

HTTPS抓包详细分析

nginx 配置全站404(百度闭站保护)