![代理如何在没有服务器证书的情况下解密 HTTPS 流量?](https://linux22.com/image/751077/%E4%BB%A3%E7%90%86%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AF%81%E4%B9%A6%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E8%A7%A3%E5%AF%86%20HTTPS%20%E6%B5%81%E9%87%8F%EF%BC%9F.png)
我正在做一个项目,涉及代理一些客户端应用程序和服务器之间的流量。为此,我使用任何代理。
我的项目需要解密 HTTPS。我可以使用 AnyProxy 来实现这一点,方法是生成 rootCA然后在客户端计算机上信任该 rootCA。
而且它确实有效,但是从理论的角度我不明白它是如何/为什么有效的。
据我所知,HTTPS加密/解密的工作原理如下:
- 服务器生成一个公钥和一个私钥。
- 服务器根据密钥生成证书。
- 它会向 CA(证书颁发机构)注册该证书。这样客户端应用程序(例如 Web 浏览器)就可以验证来自可信来源的证书的真实性。
- 客户端应用程序向服务器发出 HTTPS 请求。
- 在握手期间,客户端验证证书的真实性(从而验证服务器的真实性)并接收服务器的公钥。
- 客户端使用服务器的公钥加密请求。
- 服务器使用其私钥解密请求。
有了代理,它就需要服务器的私钥来解密客户端的请求。它是如何获得私钥的?有人能解释一下我遗漏了什么吗(或者,我是否完全搞错了)?