HTTPS加密过程简介
https加密过程详细介绍,其中用到堆成加密和非对称加密和CA数字证书
用户在浏览器发起HTTPS请求(如 juejin.cn),默认使用服务端的443端口进行连接;
HTTPS需要使用一套CA数字证书,证书内会附带一个公钥Pub,而与之对应的私钥Private保留在服务端不公开;
服务端收到请求,返回配置好的包含公钥Pub的证书给客户端;
客户端收到证书,校验合法性,主要包括是否在有效期内、证书的域名与请求的域名是否匹配,上一级证书是否有效(递归判断,直到判断到系统内置或浏览器配置好的根证书),如果不通过,则显示HTTPS警告信息,如果通过则继续;
客户端生成一个用于对称加密的随机Key,并用证书内的公钥Pub进行加密,发送给服务端;
服务端收到随机Key的密文,使用与公钥Pub配对的私钥Private进行解密,得到客户端真正想发送的随机Key;
服务端使用客户端发送过来的随机Key对要传输的HTTP数据进行对称加密,将密文返回客户端;
客户端使用随机Key对称解密密文,得到HTTP数据明文;
后续HTTPS请求使用之前交换好的随机Key进行对称加解密。
如何保证数字证书的可靠性?
- CA机构拥有自己的一对公钥和私钥
- CA机构在颁发证书时对证书明文信息进行哈希
- 包含有证书持有者、证书有效期、公钥等信息
- 将哈希值用私钥进行加签,得到数字签名
- 明文数据和数字签名组成证书,传递给客户端。
- 客户端得到证书,分解成明文部分Text和数字签名Sig1
- 用CA机构的公钥进行解签,得到Sig2(也就是CA机构对证书明文进行hash后的值)(由于CA机构是一种公信身份,因此在系统或浏览器中会内置CA机构的证书和公钥信息)
- 用证书里声明的哈希算法对明文Text部分进行哈希得到T
- 当自己计算得到的哈希值T与解签后的Sig2相等,表示证书可信,没有被篡改
作者:接水怪
链接:https://juejin.cn/post/6844904127420432391
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。