Https简单流程

  最近看到不少同学在网上写的面经,很多公司都会问到HTTPS,昨晚晚上臭儿子睡了之后花了大概一个小时读了两篇文章,算是把过程理清楚了,今天就写写总结

  

  1 客户端也就是浏览器请求一个url,比如是https://baidu.com 

  2 server端收到请求后,第一件事就是把自己的公钥传给客户端,但是传公钥不能直接传,直接传不安全

  示意图如下

  

  所以传递公钥必须通过数字证书的方式

  

  

  首先证书里包含这网站的公钥,但是客户端在收到证书的时候首先要验证证书的合法性。

  验证的逻辑是客户端本地会有一些新来的证书,这部分是操作系统已经处理过的。当收到证书之后,浏览器会对明文部分,也就是上图里除了证书颁发者签名之前的部分,进行MD5算法进行摘要处理。摘要算法是公开的,这部分不需要担心。同时利用本地已经有的值得信任的证书的公钥部分对签名进行解密,解出来的也是摘要信息。然后比较两边的摘要信息是否一致。如果一致那么证书里带的server的公钥就是可以用的

  3 client会对本次session产生一个密钥,在把密钥传给server之前利用刚刚拿到的server公钥对该密钥进行加密,然后对加密后的密钥进行传入

  4 server端拿到了该密钥之后,使用自己的私钥进行解密,解出来的就是client的密钥

  5 把client要的内容 利用client的密钥进行加密,然后传入给client

  6 client拿到了内容后使用自己的私钥进行解密,同时展示内容

posted on 2021-01-25 11:58  MaXianZhe  阅读(493)  评论(0编辑  收藏  举报

导航