HTTPS 作为安全的互联网通信协议,和 HTTP 有怎样的关系?是怎样实现的?
以前在博客或者公众号也读过一些关于 HTTPS 的文章,理解的不是很好。最近花时间读了一下《图解 HTTP》,对 HTTPS 有了更深层次的理解,写出来总结一下。

一、HTTP 协议的缺点
(1)通信时使用明文,内容可能会被窃取
HTTP 本身没有加密功能,无法对通信内容进行加密,只能以明文的方式发送。窃取通信的内容并非一件难事,只需收集在互联网上流动的数据包(帧)就行了。
对于收集来的数据包可以使用抓包工具(Wireshark)或者嗅探工具(Sniffer)进行解析。
(2)不验证通信方的身份,身份可能会被伪装
使用 HTTP 通信时,由于不需要确认通信方的身份,任何人都可以发起请求。另外,服务器只要接受到请求,不管接受方是谁都会返回一个响应。在这种情况下,接收请求的就有可能是伪造的服务器,当然客户端也可以伪造。
(3)不能保证报文的完整性,信息可能会篡改
在请求或者响应发出之后,在对方接收之前的这段时间内,请求或响应的报文可能会被篡改,协议本身无法知道这一点。
二、加密协议 SSL
HTTP 协议本身没有加密机制,但是可以使用 SSL(Secure Socket Layer)/TLS(Transport Layer Security)协议解决 HTTP 的安全性问题。
SSL 是独立于 HTTP 的协议,所以不光是 HTTP 协议,其他运行在应用层的 SMTP 和 Telnet 等协议都可以配