HTTPS协议中,CA服务器,服务器,浏览器都做了这些

总体流程

服务器找CA进行认证,获得证书。客户端请求和服务器建立连接,会访问443端口,进行安全连接,主要是验证证书。最后是两者之间怎么利用对称密钥和非对称密钥进行安全的通信
下面,就上述黄色部分的三点,我们进行详细说明
1.服务器去找CA服务器进行认证,获得证书。主要步骤如下:

  • 服务器发送自己得公钥和对应的服务器信息,域名等给ca服务器。
  • ca服务器对其选择一种hash算法,进行数据摘要
  • ca服务器将hash算法和生成的摘要(指纹)用ca服务器的密钥加密,生成签名。
  • 返回签名+信息(服务器的信息和ca服务器补充的一些签发者之类的信息)。这两个加起来就是证书了。

2.浏览器验证证书,过程:

  • 在证书信息中找到签发者,浏览器从自己系统中由底到顶递归找出对应签发者的公钥;(找不到则认为是自签名的认证,有风险)
  • 对证书签名部分进行解密,获得hash算法(一个函数)和hash指纹(即摘要);(解密成功,也代表证书确实是对应机构颁发的)
  • 用hash算法对证书信息部分进行摘要,得到新的指纹,比较两个指纹,如果一致,则信息部分没有被修改。(因为信息部分是明文,极易被修改,所以要用签名验证)
  • 验证证书信息部分中的url,和浏览器要访问的url是否是同一个。是的话,可以信任
  • 对证书信息再次进行判断:是否吊销,是否过期,是否已经被记录为黑名单。

3.浏览器和服务器之间建立https过程:
答:

  • 首先是浏览器访问对应服务器,发送一个随机数1和自己支持的加密算法;
  • 服务器接收到访问,返回消息,随机数2和自己选择的加密算法;
  • 服务器再发送证书;
  • 客户端验证证书,过程参考上方;
  • 客户端验证成功,生成随机数3,将1,2,3组成密钥,用证书内的公钥加密发送给服务器;
  • 服务器对信息解密,获得对称密钥;
  • 客户端对要发送的信息,用(对称)加密算法加密(其中,加密的核心是三个随机数),同时对信息进行用非对称公钥签名;
  • 服务器用对称密钥解密,获得信息。同时用非对称私钥验证签名(签名过程参看1),查看是否被人修改。

参考

参考1;
参考2;

你可能感兴趣的:(web)