http https 干货
HTTPS原理
在谈HTTPS原理之前,首先了解一下Http和Https的区别。
Http(全称:Hyper Text Transfer Protocol),一般称为超文本传输协议,也是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
Https(全称:Hyper Text Transfer Protocol over Secure Socket Layer),可以理解为Http+SSL/TLS,即Http下加入了SSL层,Https的安全基础是SSL,是以安全为目标的Http通道,简单讲Https是Http的安全版。
如上图所示,Https比Http多了一层SSL/TLS.
为了增加大家对SSL/TLS的理解,我在此简述一下两者概念。
SSL(全称:Secure Socket Layer,安全套接字层),位于可靠地面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证,使用数字签名确保完整性,使用加密确保私密性,以实现客户端和服务器端之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。
TLS(全称:Transport Layer Security,传输才能够安全协议),用于两个应用程序之间提供保密性和数据完整性。协议由两层组成:TLS记录协议和TLS握手协议。
详解
一.Http访问过程
如上图所示,Http请求过程中,客户端与服务器端之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击,如下:
可以看到客户端发送的请求很容易被黑客截获,如果此时黑客冒充服务器,则其可返回任意信息给客户端,而不被客户端察觉。
所以Http传输面临的风险有:
-
窃听风险:黑客可以获知通信内容。
-
篡改风险:黑客可以修改通信信息。
-
冒充风险:黑客可以冒充他人身份参与通信。
二.Http向Https演化的过程
1.为了防止上述现象的发生,可以采用对传输的消息加密(即使黑客截获,也无法破解)
注:对称加密:一个密钥,文件加密和解密使用相同的密钥。
非对称加密:两个密钥,公开密钥和私有密钥,用公开密钥对数据进行加密,只有私钥才能解密。
如上图所示,在第2步时服务器发送了一个SSL证书给客户端,SSL证书中包含的具体内容有:
-
证书的发布机构CA
-
证书的有效期
-
公钥
-
证书所有者
-
签名
在第3步时客户端采用公钥加密方式发送给服务器端一段话说之后的会话用对称加密,对称加密算法和对称密钥。
在第4步服务器接收到消息后,用私钥解密,提取出对称加密算法和对称密钥后,采用对称私钥加密回客户端说好的。
后续两者之间信息的传输就可以使用对称加密的方式了。
Https的优缺点
优点
在目前的技术背景下,Https是现行架构下最安全的解决方案,主要有以下好处:
1.使用Https协议可认证用户和服务器,确保数据发送到正确的客户端和服务端。
2.Https协议由SSL+Https协议构建的可进行加密传输,身份认证的网络协议,要比Http协议安全,可防止数据在传输过程中不被窃取,改变,确保数据的完整性。
3.Https是现行架构下最安全的解决方案,虽然不是绝对安全,但大幅度增加了中间人攻击的成本。
缺点
1.相通网络下,Https协议会使页面的加载时间延长近50%,增加10%到20%的耗电,此外,Https协议还影响缓存,增加数据开销和功耗。
2.Https协议的安全是有范围的,在黑客攻击,拒绝服务攻击,服务器劫持等方面几乎起不到什么作用。
3.最关键,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA证书的情况下,中间人攻击一样可行。
4.而且SSL证书需要购买,功能越强大的证书费用越高,个人网站,小网站可以选择入门级免费证书。
5.SSL证书通常需要绑定固定IP,为服务器增加IP会增加一定费用。
6.Https连接服务器资源占用高,相同负载下会增加带宽和服务器投入成本。
总结
既然Https有这么多缺点,那是不是就不该做呢,当然不是,随着技术的发展很多缺点是可以优化和弥补的。
打开速度问题完全可以通过CDN加速解决,很多IDC也在着手推出免费证书和一站式Https搭建服务,Https成本在未来将会大大