Https = Http+通信加密+证书+完整性保护
如上图所示,Https本质上还是走的Http,Https 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure Socket Layer)和或者TLS(Transport Layer Security)协议代替而已。
HTTP 直接和 TCP 通信;当使用 HTTPS时,则演变成先和 SSL 通信,再由 SSL 和 TCP通信了。
简言之,所谓 HTTPS,其实就是身披 SSL 协议这层外壳的 HTTP,SSL让HTTP通信更安全。
在理解Https中的SSL之前还需要了解通信中的加密方式,一般的加密方式有对称加密
和非对称加密
两种,即公开秘钥加密(公有秘钥加密)和共享秘钥加密。
公开密钥加密:使用非对称加密,使用一把公有秘钥和一把私有秘钥,发送方使用接收方的公有秘钥进行加密,将密文发给接收方,接收方使用私有秘钥进行解密处理,这个时候不用担心传输信息和私有秘钥的篡改
共享秘钥加密:使用对称加密,发送方和接收方使用同一把秘钥,发送方在发送数据时,需要将秘钥发送给接收方
在Https中,根据上述两种加密的特点,采用混合加密的方式,交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。
为什么?
因为公开秘钥加密(非对称加密)使用的通信效率低下,但是安全性更高。交换秘钥环节应该使用这种方式,一旦建立连接,那么使用共享秘钥加密(对称加密)的方式,该方式效率相对较高。
在一般的项目中,如果安全性要求不是太高的情况,在基于表单的认证的前提下,使用HTTP也是可以满足要求的。
秘钥是用来保证通信之间传输信息的合法性,那么怎么保证秘钥是合法的,这里就要引入数字证书的概念,数字证书就是第三方机构颁发的能够证明秘钥合法性的“证据”,那么怎么样保证数字证书的合法性呢?
如何保证证书是合法的?
数字证书认证机构颁发的数字证书。通信时,服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。公钥证书也可叫做数字证书或直接称为证书。接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:一,认证服务器的公开密钥的是真实有效的数字证书认证机构。二,服务器的公开密钥是值得信赖的。
上述是Https在初次通信时,客户端与服务器之间的通信步骤。