HTTPS协议详解 (2)

Server Key Exchange

2.5、Server Hello Done ( Server——>Client )

通知客户端,服务端已经将所有预计的握手消息发送完毕。

Server Hello Done

2.5、证书校验 (客户端进行证书校验)

客户端拿到服务端的公钥证书后,需对该证书的合法性进行校验,校验内容如下:

证书链的可信性;

证书是否吊销;

证书有效期;

证书域名校验,核查证书域名是否与当前的访问域名匹配;

注:
证书的详细校验过程将在下文进行详细介绍

2.6、Client Key Exchange,Change Cipher Spec Protocol,Encrypted Handshake Message ( Client——>Server )

Client Key Exchange
证书合法性验证通过之后,客户端产生随机数字Pre-master,计算生成秘钥enc_key(enc_key=Fuc(random_C, random_S, Pre-Master),将Pre-master与enc_key用证书公钥加密(非对称加密算法)发送给服务端;

Change Cipher Spec Protocol
客户端通知服务端后续的通信都采用协商的通信密钥和加密算法进行加密通信;

Encrypted Handshake Message
客户端将之前所有的握手数据(包括接受、发送)生成摘要,然后用协商好的秘钥enc_key加密(对称加密算法),发送给对应的服务端;
服务端收到消息后,会用秘钥enc_key解密客户端的摘要信息,然后用与客户端相同的算法生成服务端摘要信息,最后对比两个摘要信息相同,则验证通过;

Client Key Exchange,Change Cipher Spec Protocol,Encrypted Handshake Message

2.7、Change Cipher Spec Protocol ( Server——>Client )

服务器同样发送 Change Cipher Spec Protocol 以告知客户端后续的通信都采用协商的密钥与算法进行加密通信;

Change Cipher Spec Protocol

2.8、Encrypted Handshake Message ( Server——>Client )

服务端也会将握手过程的消息生成摘要再用秘钥加密,这是服务端发出的第一条加密消息;
客户端接收后会用秘钥解密,能解出来说明协商的秘钥是一致的。

Encrypted Handshake Message

2.9、Application Data ( Client——>Server )

到这里,双方已安全地协商出了同一份秘钥enc_key,所有的应用层数据都会用这个秘钥加密后再通过 TCP 进行可靠传输。

Application Data

2.10 总结

SSL/TLS握手过程:用非对称加密的手段传递密钥,然后用密钥进行对称加密传递数据。

三、证书校验

客户端验证服务端下发的证书,主要包括以下几个方面:

第一,校验证书是否是受信任的CA根证书颁发机构颁发;

第二,校验证书是否在上级证书的吊销列表;

第三,校验证书是否过期;

第四,校验证书域名是否一致。

3.1、校验证书是否是由受信任的CA根证书颁发机构颁发

为了确保客户端获取到的服务端公钥不被篡改,需引入权威的第三方CA机构。
CA机构负责核实公钥拥有者信息、颁发“证书(对服务端公钥进行签名)”,同时为使用者提供证书验证服务。

CA机构颁发证书的基本原理为:

服务端生成一对服务端公钥、服务端私钥;

服务端将自己的服务端公钥提供给CA机构;

CA机构核实服务端公钥拥有者信息(核实申请者提供信息的真实性,如组织是否存在、企业是否合法、是否拥有域名的所有权等);

CA机构计算服务端公钥的摘要信息,利用CA机构的私钥(CA机构有一对公钥、私钥)进行加密,加密后的服务端公钥即CA机构颁发的“证书”;

客户端验证服务端公钥的基本原理为:

Https网络请求过程中,客户端获取到服务端的公钥;

客户端用存储在本地的CA机构的公钥,对 服务端公钥进行解密,获取到服务端公钥的摘要信息A;

客户端计算服务端公钥的摘要信息B;

对比摘要信息A与B,相同则证书验证通过;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyypwx.html