https详解

in 笔记 with 1 comment views: 264 times

http协议

HTTP协议由于是明文传送,所以存在三大风险:

  1. 被窃听的风险:第三方可以截获并查看你的内容;
  2. 被篡改的危险:第三方可以截获并修改你的内容;
  3. 被冒充的风险:第三方可以伪装成通信方与你通信。

HTTP因为存在以上三大安全风险,所以才有了HTTPS的出现。

timg-3.jpeg

https协议

c1f912451f2c498596484ba7c1be326f_th.jpeg

组成HTTPS的协议:HTTP协议和SSL/TLS协议。HTTP协议就不用讲了,而SSL/TLS就是负责加密解密等安全处理的模块,所以HTTPS的核心在SSL/TLS上面。

说明:非对称加密算法(RSA)是内容加密的一类算法,它有两个秘钥:公钥与私钥。公钥是公开的钥匙,所有人都可以知道,私钥是保密的,只有持有者知道。通过公钥加密的内容,只能通过私钥解开。非对称加密算法的安全性很高,但是因为计算量庞大,比较消耗性能。

https详细通信过程

  1. 浏览器发起往服务器的443端口发起请求,请求携带了浏览器支持的加密算法和哈希算法。
  2. 服务器收到请求,选择浏览器支持的加密算法和哈希算法。
  3. 服务器下将数字证书返回给浏览器,这里的数字证书可以是向某个可靠机构申请的,也可以是自制的。
  4. 浏览器进入数字证书认证环节,这一部分是浏览器内置的TLS完成的:

    • 4.1 首先浏览器会从内置的证书列表中索引,找到服务器下发证书对应的机构,如果没有找到,此时就会提示用户该证书是不是由权威机构颁发,是不可信任的。如果查到了对应的机构,则取出该机构颁发的公钥。
    • 4.2 用机构的证书公钥解密得到证书的内容和证书签名,内容包括网站的网址、网站的公钥、证书的有效期等。浏览器会先验证证书签名的合法性。

签名通过后,浏览器验证证书记录的网址是否和当前网址是一致的,不一致会提示用户。如果网址一致会检查证书有效期,证书过期了也会提示用户。这些都通过认证时,浏览器就可以安全使用证书中的网站公钥了。

    • 4.3 浏览器生成一个随机数R,并使用网站公钥对R进行加密。
    1. 浏览器将加密的R传送给服务器。

    2. 服务器用自己的私钥解密得到R。
    3. 服务器以R为密钥使用了对称加密算法加密网页内容并传输给浏览器。
    4. 浏览器以R为密钥使用之前约定好的解密算法获取网页内容。
    备注1:前5步其实就是HTTPS的握手过程,这个过程主要是认证服务端证书(内置的公钥)的合法性。因为非对称加密计算量较大,整个通信过程只会用到一次非对称加密算法(主要是用来保护传输客户端生成的用于对称加密的随机数私钥)。后续内容的加解密都是通过一开始约定好的对称加密算法进行的。

    Q1:4.2步骤中CA证书的公匙是直接存在于浏览器上的,那其是否需要定时更新呢?还是说公匙是不会变化的呢?

    Q2:4.2步骤中网站放在证书中的公匙是临时生成的吗?


    注:文章中图片来源于网络,部分内容摘自CSDN博客

    Responses
    选择表情
    1. tp的自身优化速度是真的快啊

      Reply