https的基本流程----个人简单理解

1.客户端发起https请求

2.服务端响应一个证书(包含服务器信息,公钥,数字签名---证书颁发机构,证书的指纹(证书颁发机构自己用私钥加密的)和指纹算法等)

3.客户端验证证书是否安全.判断内容

(1)判断颁发机构是否为操作系统所信任的(一般在本地) --------操作系统会默认一些颁发机构是安全的
(2)利用操作系统所信任的颁发机构的证书 (这里的证书是颁发机构自己用的) 中的公钥,去解密上述证书的加密的指纹得到指纹hash摘要
(3)利用上述指纹算法算出指纹hash摘要,从而对比两个hash摘要是否相同,从而保证证书数据没有被篡改过

4.如果第3步都验证通过说明该证书是可信的

5.检验服务器响应证书的公钥,是否为服务器所发

6.给服务器发送随机字符串,服务器用私钥加密随机字符串并做hash摘要响应给客户端,客户端用公钥解密得到hash摘要并和自己生成的hash值对比是否一致,从而判断对方是否为服务器

7.如果第6步通过,说明服务端确实拥有正确的私钥,客户端就可以用这个公钥加密一个对称加密的密钥(简称对称密钥)然后发送给服务端

8.服务端用私钥解密这个加密的对称密钥,以后双方便用这个对称密钥加密进行通信。




上述存在的疑问的个人见解

(2)利用操作系统所信任的颁发机构的证书 (这里的证书是颁发机构自己用的) 中的公钥,去解密上述证书的加密的指纹得到指纹hash摘要

这一步的指纹hash摘要的意义是什么?不做hash摘要会不会有影响?

答:因为证书中的(公钥)对应了一个私钥,而这个私钥只有证书机构才拥有。
不做hash的情况,黑客只要篡改证书信息,很难模拟对应的私钥加密生成的指纹,而该指纹如果不做hash摘要,那么我们验证也不做hash摘要保持一致就可以了。所以可以不是必须的。
这里做hash的意义,可以减小数据长度,加快到时对方用公钥解密速度,优化性能。


第6步同理,hash可以优化性能,且此处这样使用可以让黑客更难找出加密规律(因为是主动探查服务端有没有私钥)。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容