TLS 握手
- 第一次握手:客户端发送发送支持的加密算法和 hash 算法,请求证书
- 第二次握手:服务器选择一个加密算法和 hash 算法,同时把证书发给客户端。证书中包括:颁发日期、签发机构、公钥、域名等信息
- 第三次握手:客户端收到证书后,首先检查证书的有效性,如果有效,则会生成一个密钥,利用公钥将该密钥加密。同时利用 hash 算法计算握手信息,使用对称加密算法将 hash 加密。将加密后的信息发给服务器端
- 第四次握手:服务器端利用私钥解密得到对称加密的密钥,同时解密握手信息,验证和客户端发过来的是否一致。如果一致,则利用 hash 算法计算握手信息,使用对称加密算法加密,发给客户端
- 客户端利用密钥解密,利用 hash 算法计算握手信息,对比服务端发过来的 hash 值。如果相同,则握手结束,此时可以开始利用密钥传输数据。
TLS 握手一共四次,第四次握手后,客户端已经确定服务器是否拿到正确的密钥。
利用 hash 算法计算握手信息来确保服务器端收到的密钥是正确的,等于是给服务器端发送一个测试数据,让其测试密钥的正确性。一种手段而已。
TLS 握手过程中如果有任何错误,都会使加密连接断开,从而阻止了隐私信息的传输。
如何验证证书有效性
- 根据证书有效期
- 判断是否是权威机构颁发的
- 验证证书数字签名
- 对比证书的域名