理解HTTPS
前言
在详细说明 HTTPS 之前,我们先来简单说一下HTTP,关于HTTP的详细说明可以翻看我的另一篇博客,这里只讨论HTTP的缺点,以及HTTPS是什么,它又为什么会出现。
HTTP的缺点
HTTP 主要有以下不足:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
当然,这些问题不仅在 HTTP 上出现,其他未加密的协议中也会存在这类问题。
1、通信使用明文可能会被窃听
由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用 HTTP 协议通信的请求和响应的内容)进行加密。即HTTP 报文使用明文(指未经过加密的报文)方式发送。
2、不验证通信方的身份就可能遭遇伪装
HTTP 协议中的请求和响应不会对通信方进行确认。也就是说存在“服务器是否就是发送请求中 URI 真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题。HTTP 协议的实现本身非常简单,不论是谁发送过来的请求都会返回响应,
3、无法证明报文完整性,可能已遭篡改
所谓完整性是指信息的准确度。若无法证明其完整性,通常也就意味着无法判断信息是否准确。
如果在 HTTP 协议通信过程中使用未经加密的明文,比如在 Web 页面中输入信用卡号,如果这条通信线路遭到窃听,那么信用卡号就暴露了。
另外,对于 HTTP 来说,服务器也好,客户端也好,都是没有办法确认通信方的。因为很有可能并不是和原本预想的通信方在实际通信。并且还需要考虑到接收到的报文在通信途中已经遭到篡改这一可能性。
为了统一解决上述这些问题,需要在 HTTP 上再加入加密处理和认证等机制。我们把添加了加密及认证机制的 HTTP 称为 HTTPS(HTTPSecure)。
HTTP + 加密 + 认证 + 完整性保护 = HTTPS
![](https://img2020.cnblogs.com/blog/2580638/202110/2580638-20211025171214983-699548252.png)
使用HTTPS通信
经常会在 Web 的登录页面和购物结算界面等使用 HTTPS 通信。使用HTTPS 通信时,不再用 http://,而是改用 https://。另外,当浏览器访问 HTTPS 通信有效的 Web 网站时,浏览器的地址栏内会出现一个带锁的标记。对 HTTPS 的显示方式会因浏览器的不同而有所改变。
![](https://img2020.cnblogs.com/blog/2580638/202110/2580638-20211025171514046-221099845.png)
HTTPS 是身披 SSL 外壳的 HTTP
HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL 和 TLS 协议代替而已。
通常,HTTP 直接和 TCP 通信。当使用 SSL时,则演变成先和 SSL通信,再由 SSL和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披SSL协议这层外壳的 HTTP。
![](https://img2020.cnblogs.com/blog/2580638/202110/2580638-20211025171816175-2138935037.png)
在采用 SSL后,HTTP 就拥有了 HTTPS 的加密、证书和完整性保护这些功能。
SSL是独立于 HTTP 的协议,所以不光是 HTTP 协议,其他运行在应用层的 SMTP 和 Telnet 等协议均可配合 SSL协议使用。可以说 SSL是当今世界上应用最为广泛的网络安全技术
注:文中内容来自《图解HTTP》。