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的建立过程结束。
证书的工作原理:
网站在使用HTTPS前需要向认证机构申请一份数字证书。证书包含了服务器的信息,证书的有效时间,认证机构的信息,Hash算法和服务器公钥和数字签名。
数字签名是对证书的信息的一个加密Hash,CA机构使用私钥对证书进行Hash后加密 (Hash的目的是提高解密效率,因为一般加密后的信息都比较长,所以需要先Hash得到固定长度的信息再加密)
客户端认证证书的步骤就是通过事先存储在浏览器的CA公钥对数字签名进行解密,然后对证书进行Hash后对比数字签名,如果一致且证书时间在有效期内则代表证书是有效的。