流程:
客户端向服务端发送一个消息,服务端收到后发送给客户端自己的CA证书(里面有服务器的公钥等);
客户端根据证书里面的算法验证证书是否有效;
证书验证有效后,客户端发送给服务端一个随机串;
后续客户端和服务端通信使用这个随机串(不是很准确)进行对称加密通讯。
CA流程:
服务提供方向有资格的机构申请证书,机构将服务提供方的公钥制作到证书中,将私钥提供给服务提供方;
注:证书中包含服务提供方的公钥和各种摘要信息加密(使用机构的私钥加密)后的串,
客户与服务端交互时,客户收到证书后会进行验证,验证方法是使用本地的操作系统中预置的机构证书,找到该机构的公钥,然后对证书进行解密,解密出来的结果和摘要做对比,如果一致,则证明没有问题,可以使用服务提供方给到的证书中的公钥。
总结:
客户端请求服务端;
服务端返回给客户端证书(证书中有服务端的公钥等信息,和公钥等信息加密后的串(这里的加密用机构的私钥加密));
客户端拿到证书后,从系统预置的机构证书里面找到机构公钥,然后用结构公钥解密信息,如果内容和服务端给的证书中内容一致则验证通过,可以直接使用服务端给的证书里面的公钥;
拿到公钥后加密随即串给服务端;
服务端收到随即串后,后续客户端和服务端通信使用这个随机串进行对称加密。