客户端与服务器建立HTTPS通信的过程可以分为以下几步:
一、客户端向服务器发起HTTPS请求
请求报文中包括客户端所支持的SSL版本以及加密组件(所使用的的加密算法)
二、服务器向客户端发送数字证书
1、服务器先发送应答,应答中包含SSL版本以及从客户端请求中筛选出来的加密组件
(实质就是协商决定使用哪种加密算法)
2、服务器发送Certificate报文,报文中包含公开密钥证书(数字证书)
三、客户端验证数字证书
1、客户端用CA的公钥解密数字证书,验证证书的有效性,取出服务器的公钥
确认颁发此证书的 是真实有效的CA
确认该服务器的公钥是值得信赖的
2、客户端根据协商好的加密算法生成master secret
(在之后交换数据的过程中使用的共享密钥)
3、客户端使用服务器的公钥加密报文
四、服务器得到master secret
服务器使用自己的私钥解密报文,取出master-secret(之后交换数据阶段使用的共享密钥)
至此,SSL连接就算建立完成
五、客户端与服务器交换数据
在这个阶段,客户端/服务器使用共享密钥来加密/解密报文