代理如何在没有服务器证书的情况下解密 HTTPS 流量?

代理如何在没有服务器证书的情况下解密 HTTPS 流量?

我正在做一个项目,涉及代理一些客户端应用程序和服务器之间的流量。为此,我使用任何代理

我的项目需要解密 HTTPS。我可以使用 AnyProxy 来实现这一点,方法是生成 rootCA然后在客户端计算机上信任该 rootCA。

而且它确实有效,但是从理论的角度我不明白它是如何/为什么有效的。

据我所知,HTTPS加密/解密的工作原理如下:

  1. 服务器生成一个公钥和一个私钥。
  2. 服务器根据密钥生成证书。
  3. 它会向 CA(证书颁发机构)注册该证书。这样客户端应用程序(例如 Web 浏览器)就可以验证来自可信来源的证书的真实性。
  4. 客户端应用程序向服务器发出 HTTPS 请求。
  5. 在握手期间,客户端验证证书的真实性(从而验证服务器的真实性)并接收服务器的公钥。
  6. 客户端使用服务器的公钥加密请求。
  7. 服务器使用其私钥解密请求。

有了代理,它就需要服务器的私钥来解密客户端的请求。它是如何获得私钥的?有人能解释一下我遗漏了什么吗(或者,我是否完全搞错了)?

答案1

这正是您需要在客户端上生成并安装根 CA 的原因:它使您的代理能够为每个域颁发假证书。代理不会解密客户端之间的现有连接,而是建立两个单独的连接:它充当面向服务器的客户端和面向客户端的服务器。大致如下:

HTTPS拦截序列图

相关内容