HTTPS 基于 HTTP,通过 SSL 或 TLS 提供加密处理数据、验证对方身份以及数据完整性保护功能。
**HTTPS = HTTP + SSL 协议或 TLS 协议。**也就是说 https 本质上是基于 http 协议的,只不过增加了一个安全层(SSL 协议或 TLS 协议)。
HTTPS 的目的是解决 http 传输过程中不安全的问题,简单来说它解决了三件事:
解决数据泄露的最好方式是对数据进行加密。https 使用了公钥加密和对称密钥加密结合的方式来加密数据,保证数据不会在传输过程中泄露信息。
公钥加密是服务器将公钥传给客户端,而私钥自己保存,客户端拿到公钥后对数据进行加密,然后发送到服务器上,只有服务器的私钥才能解密,也就是说只要服务器的私钥不泄露,安全性还是很高的。
对称加密是加密和解密都是同一个密钥,这种方式效率比较高,但是有个很大的问题,就是如何将密钥传给客户端,如果直接传输,那么就会很容易造成密钥泄露,那么加密就形同虚设了。
公钥加密的特点是安全性高,但是效率低,而对称密钥加密的特点是效率高,但是安全性低。
https 利用了两者的特点,先用公钥加密的方式将密钥传给客户端,这样解决了密钥泄露的风险,然后双方再使用对称密钥的方式进行加密通讯。
https 通过数字证书来解决身份认证的问题。
第三方权威机构,对服务器进行认证,然后对服务器的公开密钥进行数字签名,并且将此公钥放入到为此服务器颁发的数字证书之中。
当客户端请求 https 时,服务器只需将数字证书发送给客户端,客户端可以通过数字证书进行认证,数字证书有两个作用。
HTTPS 在发送数据时会附加一种叫做 MAC(消息身份验证码)的报文摘要,MAC 能够查知报文是否遭到篡改,从而保护报文的完整性。