**HTTPS是什么**

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

传统的HTTP模式,存在着大量的灰色中间环节,相关信息很容易被窃取,但HTTPS却是通过认证用户与服务器,将数据准确地发送到客户机与服务器,并采用加密方式以防数据中途被盗取,大大降低了第三方窃取信息、篡改冒充身份的风险。

什么是https

**HTTPS安全原理解析**

HTTPS主要由有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。HTTPS与HTTP的原理区别可以观察下图:

https工作原理

**HTTP工作原理:**

①客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,一般TCP连接的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和许可内容。

② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

**HTTPS的工作原理:**

①. 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器;

②. 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数;

③. 客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥;然后,再产生一个称作pre_master_secret的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加/解密),并将加密后的信息发送给服务器;

④. 客户端与服务器端根据pre_master_secret以及客户端与服务器的随机数值独立计算出加密和MAC密钥(参考DH密钥交换算法)。

⑤. 客户端将所有握手消息的MAC值发送给服务器;

⑥. 服务器将所有握手消息的MAC值发送给客户端。

**HTTPS的优点与缺点**

根据案例反馈,目前HTTPS的优缺点主要分布在三方面:

各方 观点

**HTTPS的优点:**

**安全性方面**

在目前的技术背景下,HTTPS是现行架构下最安全的解决方案,主要有以下几个好处:

> 1、使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
> 2、HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
> 3、HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

**HTTPS的缺点:**

**技术方面**

> 1、相同网络环境下,HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电。此外,HTTPS协议还会影响缓存,增加数据开销和功耗。
> 2、HTTPS协议的安全是有范围的,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。
> 3、最关键的,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。

**成本方面**

> 1、SSL的专业证书需要购买,功能越强大的证书费用越高。个人网站、小网站可以选择入门级免费证书。
> 2、SSL 证书通常需要绑定 固定IP,为服务器增加固定IP会增加一定费用;
> 3、HTTPS 连接服务器端资源占用高较高多,相同负载下会增加带宽和服务器投入成本;

既然HTTPS有这么多缺点,那是不是就不该做呢,当然不是的,随着技术的发展很多缺点是可以优化和弥补的。比如:

打开速度问题完全可以通过CDN加速解决,很多IDC也在着手推出免费证书和一站式HTTPS搭建服务,HTTPS成本在未来将会大大缩小!

**我们到底要不要做HTTPS?**

**正方观点**

> 1、HTTPS具有更好的加密性能,避免用户信息泄露;
> 2、HTTPS复杂的传输方式,降低网站被劫持的风险;
> 3、搜索引擎已经全面支持HTTPS抓取、收录,并且会优先展示HTTPS结果;
> 4、从安全角度来说个人觉得要做HTTPS,不过HTTPS可以采用登录后展示;
> 5、HTTPS绿锁表示可以提升用户对网站信任程度;
> 6、基础成本可控,证书及服务器已经有了成型的支持方案;
> 7、网站加载速度可以通过cdn等方式进行弥补,但是安全不能忽略;
> 8、HTTPS是网络的发展趋势,早晚都要做;
> 9、可以有效防止山寨、镜像网站;

**反方观点**

> 1、HTTPS会降低用户访问速度,增加网站服务器的计算资源消耗;
> 2、目前搜索引擎只是收录了小部分HTTPS内容,应该保持观望制度;
> 3、HTTPS需要申请加密协议,增加了运营成本;
> 4、百度目前对HTTPS的优先展现效果不明显,谷歌较为明显;
> 5、技术门槛较高,无从下手;
> 6、目前站点不涉及私密信息,无需HTTPS;
> 7、兼容性有待提升,如robots不支持/联盟广告不支持等;
> 8、HTTPS网站的安全程度有限,该被黑还是被黑;
> 9、HTTPS维护比较麻烦,在搜索引擎支持HTTP的情况,没必要做HTTPS;

**HTTPS的数据加密性:**

HTTPS中数据的保密性主要是通过加密完成的。加密算法一般分为两种,一种是非对称加密(也叫公钥加密),另外一种是对称加密(也叫密钥加密)。

HTTPS使用非对称加解密主要有两个作用,一个是密钥协商,另外可以用来做数字签名。所谓密钥协商简单说就是根据双方各自的信息计算得出双方传输内容时对称加解密需要使用的密钥。如下图:

密钥协商

对称加密就是加密和解密都使用的是同一个密钥。如下图:

对称加密

**HTTS多次握手和复杂的加密机制有效的加大了网站的安全性,加密机制与认证机制可以减少网站被劫持和假冒的风险!**

HTTPS是目前的大趋势,各类搜索引擎都重视HTTPS,优先收录HTTPS的站点,对HTTPS站点友好。HTTPS无论是安全性还是对搜索引擎优化都是有好处的,而且现在有很多免费的SSL证书申请可用。无论是你用vps还是用虚拟主机,无论你有没有固定IP都可以上HTTPS。上面也说了上个“小绿锁”对用户来说会有安全感!所以建议大家可以的话都上个“小绿锁”。