HTTPS(全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。实际就是HTTP+SSL/TLS,是对http的一个加强。 https并不是一个新的单一的协议。
![](https://img.haomeiwen.com/i7047608/ed189858837de7c3.png)
HTTPS验证原理(SSL握手过程)
HTTPS验证简单来说就是使用非对称加密进行身份验证,使用对称加密进行通信,具体流程如下。
- 服务器生成一对非对称加密密钥,首先向CA中心请求自己的证书,并将自己的公钥发送给CA中心,CA中心将证书返回服务器,证书内包括证书的发布机构CA、证书的有效期、公钥、证书所有者、数字签名、签名方式等等。
- 客户端向服务器发起请求。
- 服务器返回客户端证书。
- 浏览器读取证书中的证书所有者、有效期等信息进行校验,若校验通过则进行下一步。
- 浏览器开始查找操作系统中已内置的受信任的证书发布机构CA,与服务器发来的证书中的颁发者CA比对,用于校验证书是否为合法机构颁发。如果找不到,浏览器就会报错;如果找到,那么浏览器就会从操作系统中取出 颁发者CA 的公钥,然后对服务器发来的证书里面的签名进行解密。
-
浏览器使用证书内的hash算法计算出服务器发来的证书的hash值,将这个计算的hash值与证书中数字签名做对比,对比结果一致,则证明服务器发来的证书合法,没有被冒充。
- 认证成功后,客户端会随机生成一个字符串,使用服务端给的公钥加密字符串,发送给服务器。
- 服务器收到加密后的字符串,使用自己的私钥进行解密,得到对称加密秘钥。
-
服务器和客户端开始使用对称加密方式进行通信。
网友评论