服务器生成一对公私钥,将公钥和公司的一些信息(如营业执照,域名)等交给权威的CA机构验证,验证 通过后会给公司一个数字证书,证书里包含公司的名称,域名,公钥,证书到期时间,CA机构的信息,以及CA机构的数字签名等信息。数字签名由CA机构的私钥加密生成。
大概通信流程:
1 浏览器访问https网站,将自己支持的一些加密算法发给网站
2 网站选出一个安全性最高的加密算法,连同自己的数字证书一起给浏览器
3 浏览器拿到证书后,验证证书是否有效,如果浏览器不信任证书里的CA,则会提示用户证书不受信任
4 如果浏览器信任该CA机构,则使用该CA的公钥解密证书里的数字签名,校验证书是否过期,与访问的网站是否一致等。
5 如果证书是有效的,或者用户接受了不受信任的证书,双方开始协商出一个对称密钥。
6 浏览器生成一个随机的密钥,并用网站的公钥加密发送给网站
7 网站收到后用私钥解密密钥,双方都知道了这个密钥,握手过程结束,后面的数据传输都使用该密钥加密后发送
因为非对称加密计算量大,效率低,而对称加密速度比非对称加密高得多,所以先通过非对称加密的方式协商出一个对称加密的密钥,然后双方的数据通过这个对称密钥进行加密,这样既保证了数据传输的安全性又保证了效率。