• HTTPS加密过程


    参考:https://www.cnblogs.com/fengf233/p/11775415.html

    https加密过程

    由于HTTP的内容在网络上实际是明文传输,并且也没有身份验证之类的安全措施,所以容易遭到挟持与攻击

    HTTPS是通过SSL(安全套接层)和TLS(安全传输协议)的组合使用,加密TCP载荷即HTTP报文内容,同时通过不对称密钥方式认证身份,保证传输的安全可靠

    即:HTTP+加密+认证+完整性保护=HTTPS

    对称加密

    即:使用相同的密钥进行编/解码的算法,也就是共享密钥

    image

    非对称加密

    需要两个密钥,一个是公钥,一个是私钥。

    公钥和私钥是成对生成的。

    用公钥加密的密文只能用对应的私钥解开,用私钥加密的密文只能用对应的公钥解开。

    image

    在https中,同时使用对称加密和非对称加密。

    image

    加密过程:

    1. 首先server需要向CA提交自己的公钥,来换取一个CA证书。

       CA证书当中就包括server提交的公钥的数字签名。
      
    2. client预先安装CA的公钥,用来校验server下发给client的公钥。

    3. 当client想server发送https请求时。首先做TCP的三次握手,然后开始第四次握手。

    4. 第四次握手的内容包括:

      • client生成一个random1和自己支持的加密算法发给server
      • server生成一个random2和server确认用哪个加密算法加密发给client
      • 同时server下发证书给client
      • client拿到证书后,取出里面的公钥,并对公钥进行校验,成功后,用这个公钥加密一个random3,得到一个PreMaster Key给server,自己同时也通过random123算出一个共享密钥key进行数据加密
      • server拿到PreMaster Key之后用自己的私钥解码得到random3, 然后用已知的random123算出一个共享密钥key来进行数据加密
    5. 之后的数据传输都会使用这个共享密钥来进行数据加密和解密

    image

    其他:

    如果每次重连都要重新握手还是比较耗时的,所以可以对握手过程进行优化,可以在 Client Hello 消息里还附带了上一次的 Session ID,服务端接收到这个 Session ID 后如果能复用就不再进行后续的握手过程。

  • 相关阅读:
    图片点击后直接下载
    输入网址到页面呈现,以及首屏加载
    RESTful
    html语义化标签
    git 初学解决错误
    爬虫
    Scrapy安转遇到问题
    前端补充
    django-ORM
    django-web聊天
  • 原文地址:https://www.cnblogs.com/dream2sky/p/14235424.html
Copyright © 2020-2023  润新知