HTTPS的详解

68 阅读2分钟

image.png

HTTP与HTTP传输的数据都是都是以明文的形式在网络中传输,安全性不高, HTTPS在TCP连接后加入了SSL/TLS层,保证了HTTPS的安全性。

TSL建立连接的过程如下:

1.第一次握手

客户端向服务器发送请求报文,带有加密套件,TSL的版本号,随机数A

2.第二次握手

服务器接收到客户端的报文,选择合适的加密算法,确认TSL版本号和随机数B,服务器会发送数字证书(证书带有服务器公钥)

3.第三次握手

1️⃣:客户端通过CA认证机构存储于浏览器或操作系统的CA公钥,验证证书的可靠性后,取出服务器公钥,生成第三个随机数pre-master,使用服务器公钥对pre-master加密后发送给服务器

2️⃣:之后使用协商的加密算法和上述3个随机数,算出对称密钥,并告知服务器之后的对话改用对称加密通信

3️⃣:对上述所有的数据进行摘要加密后发送给服务器,用于检查之前的通话是否被篡改

4.第四次握手

1️⃣:服务器收到用公钥加密的随机数后,使用私钥解密,生成对称密钥

2️⃣:使用协商的加密算法和上述3个随机数,算出对称密钥,并告知客户端之后的对话改用对称加密通信

3️⃣:对上述所有的数据进行摘要加密后发送给客户端,用于检查之前的通话是否被篡改

到此为止,TSL的建立过程结束。

证书的工作原理:

image.png

网站在使用HTTPS前需要向认证机构申请一份数字证书。证书包含了服务器的信息,证书的有效时间,认证机构的信息,Hash算法和服务器公钥和数字签名。

数字签名是对证书的信息的一个加密Hash,CA机构使用私钥对证书进行Hash后加密 (Hash的目的是提高解密效率,因为一般加密后的信息都比较长,所以需要先Hash得到固定长度的信息再加密)

客户端认证证书的步骤就是通过事先存储在浏览器的CA公钥对数字签名进行解密,然后对证书进行Hash后对比数字签名,如果一致且证书时间在有效期内则代表证书是有效的。