通俗易懂讲解,彻底弄懂 https 原理本质(五)https 的过程

一、数字证书的验证

        小花👧收到了小明👦的数字证书,首先要验证此数字证书是不是CA颁发的。

        因为我们电脑、手机的操作系统里面,都会内置CA机构的数字证书。

        所以,小花👧就可以对数字证书进行验证。

知识回顾

摘要:单向加密算法,比如md5对证书整个内容加密的结果就叫摘要,也叫做证书的指纹;

签名:小明用私钥🔑对摘要进行加密出来签字串,就叫做签名。

验签:用公钥对签名进行解密出来的摘要和原来的对比,就叫做验签。


数字证书的验证流程,如下:

  1. 小花👧用内置的CA的数字证书,得到CA的公钥。
  2. 小明👦的数字证书 M 。小花用小明的公钥对证书M里面的签名进行解密,得到摘要D1。
  3. 小花👧根据证书M的摘要算法md5对证书整个内容计算得到摘要D2。
  4. 小花👧对比摘要D2和D1 是否相等。是则说明此证书就是CA颁发的;否则说明此证书不是CA颁发的,是有风险的,不安全的。

        证书验证通过后,就说明此证书是CA颁发的。那么,小花就可以从数字证书中拿到小明的公钥了。因为小明在申请数字证书时,数字证书中所有者是小明,CA是会验证小明的身份的,所以数字证书中小明的公钥是真实的。

        至此,小明终于把公钥安全的传输给了小花了。

        这件事的成立 ,接下来我们的工作就好做多了,接下来,我们看一下具体的传输过程。


二、 完整的传输过程

        通过前面所有的关卡后,我们最后梳理一下完整的传输过程。

  1. 小明把写完的信,附加上摘要算法MD5, 以及通过MD5算出来的摘要;
  2. 小明用私钥,对摘要进行加密得到签名;
  3. 小明把摘要算法、摘要、签名都附加到信件上,连同数字证书一起发送给小花;
  4. 小花收到信后,首先用CA数字证书拿到CA公钥对小明的数字证书进行验证;
  5. 小花发现验证通过后,会从证书中拿到了小明的公钥;
  6. 小花有了小明的公钥,接下来就对信件内容进行验证;
  7. 小花用小明的公钥对信件的签名解密,得到信件摘要D1;
  8. 小花用摘要算法对信件运算,得到信件摘要D2;
  9. 小花对比 D1 是否等于D2;
  10. 如果不相等,说明信件被人篡改过,不安全;
  11. 如果相等,说明,信件内容没有被篡改过;
  12. 相等的情况,小花就拿到了信件的内容。

        以上所有的内容,是数字证书,加密解密,签名,验签的过程,还没有正式讲 https 的过程呢。


三、https 的过程

        我们先看一张图。

         我们以访问 www.helloworld.net 网站为例,讲解https的过程。

(1)网站申请证书阶段

  1. 网站向CA机构申请数字证书(需要提交一些材料,比如域名);
  2. CA向证书中写入摘要算法,域名,网站的公钥等重要信息;
  3. CA根据证书中写入的摘要算法,计算出证书的摘要;
  4. CA用自己的私钥对摘要进行加密,计算出签名;
  5. CA生成一张数字证书,颁发给了 www.helloworld.net;
  6. 网站的管理员,把证书放在自己的服务器上;

(2)浏览器验证证书阶段;

  1. 浏览器在地址栏中输入https://www.helloworld.net,并回车
  2. 服务器将数字证书发送给浏览器;
  3. 浏览器用操作系统内置的CA的数字证书,拿到CA的公钥;
  4. 浏览器用CA公钥对 www.helloworld.net 的数字证书进行验签;
  5. 具体就是,浏览器用CA公钥,对helloworld的数字证书中的签名进行解密,得到摘要D1;
  6. 浏览器根据helloworld数字证书中的摘要算法,计算出证书的摘要D2;
  7. 对比 D1和D2 是否相等。;
  8. 如果不相等,说明证书被掉包了;
  9. 如果相等,说明证书验证通过了;

(3)协商对称加密密钥阶段

  1. 浏览器验证数字证书通过以后;
  2. 浏览器拿到数字证书中的公钥,也就是 www.helloworld.net 网站的公钥;
  3. 浏览器就用网站的公钥对密钥S进行加密,加密以后的密文发送给服务器;
  4. 服务器收到密文后,用自己的私钥进行解密,得到密钥S;
  5. 此后浏览器,服务器双方就用密钥S进行对称加密的通信了;

至此,https过程结束。

        过程那么多,抓住几个关键的问题去理解会更简单。其实本质上还是两个人如何安全高效的进行通信。


四、总结

        最后,我们简单的总结一下。

question:小明和小花安全的通信,怎么做?

答:通过加密

question:通过哪种加密方式通信,更高效?

答:对称加密。因为,单向加密,没办法解密,不行。非对称加密,太慢,也不行。只有对称加密,速度快。

question:采用对称加密,密钥S 怎么安全传输?

答:小花使用小明的公钥,对密钥S进行加密,传给小明。小明用自己的私钥解密。

question:小明如何安全的把自己的公钥传输给小花?

答:使用数字证书。​具体就是小明向CA申请一个自己的数字证书,把自己的公钥放在证书中,小明再将数字证书发送给小花。

question:小花如何验证数字证书的真实性?

答:小花用操作系统内置的CA的数字证书,拿到CA的公钥,用CA的公钥,对数字证书进行验签

验签通过,说明数字证书是真的。


       系统文章,就写完了。解决的问题是双方通信如何采用安全高效的方式进行。

欢迎点赞关注。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾阳Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值