zoukankan      html  css  js  c++  java
  • Fiddler抓取HTTPS协议

    HTTPS协议握手过程:

    1,客户端明文请求,把自己支持的非对称加密算法(用于使用CA证书公钥加密计算生成协商密钥的随机数per_master)、对称加密算法(用于以后使用协商密钥加密传输内容)、验证数据完整性的HASH算法、随机数Random_C发给服务器。

    2,服务器发回客端的明文信息,包含选择一套加密算法、HASH算法、CA证书、随机数Random_S。CA证书中包含服务器地址、公钥、证书颁发机构信息和签名。

    3,客户端做五件事:  

      a)对证书合法性、证书中包含的地址与正在访问的地址是否一致等进行校验;

      b)生成一串随机数密码pre_master,并使用服务器选择的非对称加密算法和CA证书里的公钥对pre_master加密,得到enc_pre_master;

      c)计算协商密钥enc_key=Func(random_C,random_S,pre_master);

      d)使用约定好的HASH验证算法计算握手信息,用协商密钥enc_key及约定好的加密算法对握手消息加密。

      e)客户端发送enc_pre_master、同意使用约定的算法和协商密钥通信、加密的握手信息给服务器。

    4,服务器收到数据做五件事:

      a)用自己的私钥解密enc_pre_master,得到pre_master;

      b)计算协商密钥enc_key=Func(random_C,random_S,pre_master);

      c)使用协商密钥enc_key和约定的解密算法解密握手信息,并验证HASH与客户端发来的是否一致;

      d)生成握手消息,使用协商密钥enc_key与约定好的加密算法加密握手消息,发给客户端。

    5,客户端用协商密钥解密握手消息,计算HASH,如果HASH与服务器发来的一致,握手结束。

    此后,所有通信数据将用对称密钥enc_key及约定好的对称加密算法进行加密解密。

    这里客户端与服务器互发加密的握手消息并验证,是为了保证双方都获得了一致的密钥enc_key,并且可以正常的加密解密数据,为真正数据的传输做一次测试。

     从上面的过程可以看到,enc_key是最终的通信密钥,得到了浏览器生成的pre_master,就得到了enc_key,就可以解密HTTPS报文。

    Fiddler截获HTTPS协议过程:

    1,F截获浏览器发给服务器的HTTPS请求,伪装成浏览器向服务器发送请求进行握手。

    2,服务器发回响应,获取到CA证书,用根证书公钥进行解密,验证服务器签名,获取到服务器CA证书公钥。然后F伪造自己CA证书,冒充服务器证书给客户端浏览器。

    3,浏览器对返回的数据进行校验、生成pre_master、用F伪造的证书公钥加密生成enc_pre_master,并生成enc_key。

    4,浏览器将重要数据返回给服务器时,又被F截获。F将截获的密文用自己伪造证书的私钥解开,得到enc_pre_master,计算出对称密钥enc_key。F将enc_pre_master用服务器证书公钥加密传给服务器。

    5,服务器用私钥解开数据,建立信任,再发送加密握手消息给客户端。

    6,F截获服务器发来的密文,用服务器公钥解开,再用自己伪造证书的私钥加密传给浏览器。

    7,浏览器得到加密信息,用伪造证书的公钥解开,验证HASH,握手正式完成。

    此后,浏览器和服务器之间的消息都是用对称密钥enc_key加密和解密,F知道这个enc_key,所以整个HTTPS信息对F是透明的。

     这个过程里,浏览器认可F伪造的CA证书是关键,所以对伪造CA证书签名的根证书是关键。所以系统里要安装这个F伪造的根证书。

  • 相关阅读:
    Linux 禁用ipv6
    【搬运】Get Log Output in JSON,通过Log4j2与Logback输出JSON格式日志
    Gnome禁用tracker-miner-apps、tracker-miner-fs、tracker-store
    Sentry错误日志监控你会用了吗?
    django执行源生的mysql语句
    django实现自定义manage命令的扩展
    C++教程详解
    python数据分析教程大全
    将mysql主键id从1开始 变为自增
    django restful framework教程大全
  • 原文地址:https://www.cnblogs.com/sekon/p/6498840.html
Copyright © 2011-2022 走看看