gpt4 book ai didi

php - 我可以从 HTTP 客户端获取 TLS secret 来解密我自己的 HTTPS 对话吗?

转载 作者:可可西里 更新时间:2023-10-31 22:13:26 28 4
gpt4 key购买 nike

我正在构建一个充当代理的网站记录器,以便持续测试网络抓取工具。它分为三个 Docker 容器,全部在 GNU/Linux 上:(1) 一个代理,(2) 一个 API 和请求队列,以及 (3) 一个简单的网络应用程序。

它适用于 HTTP 站点:我单击 Web 应用程序中的一个按钮,这会向 API 容器发出请求,然后向内部请求队列添加一些内容,然后通过代理请求该站点。代理在网站通过时记录该网站。

但是,我忘记了不能记录HTTPS站点流量,现在我来实现这个,我发现代理只是使用CONNECT动词,然后充当客户端和目标之间的数据交换器。我相信我无法重放相同的数据 block ,因为加密的一部分使用了随机化的、一次性的、对称 key (但是我有一个适合测试这个的脚本,所以我这样做只是为了教育值(value)!)。

所以,我想知道我的抓取客户端是否可以为代理系统提供足够的 secret 来解码字节流?我正在使用 Wget 进行提取,我猜这将使用 OpenSSL。不过它不需要是 Wget:如果我使用带有 file_get_contents 的 PHP 脚本有了流上下文,我可以问 openssl module用于解密 key ?

(公平地说,即使可能,我也不会以这种方式解决问题,我只是觉得多了解一点 TLS 会很有趣。在实践中,我会记录一个“null”针对代理中所有安全网站的条目,并要求请求服务通过 API 调用通知 header /正文数据的代理,以便稍后播放。他们当然会有这些项目的明文副本)。 p>

最佳答案

是的,我认为您在这里有几个选择。

HTTPS 专门用于阻止 "Man in the Middle" attacks和窃听者,这基本上就是你想要实现的目标。不过,您可以打破它的一些假设并打败它。

在 SSL 连接开始时,1. 远程服务器提供其公钥和证书,2. 客户端验证证书,3. 发送使用服务器公钥加密的 session key 。有关详细信息,请参见例如An overview of the SSL or TLS handshake

在您描述的情况下,您有两种可能的方法来规避此保护:

1。重写 TLS 数据,将服务器的证书和 key 替换为您自己的

由于您控制着通信 channel ,您可以在步骤 (1) 中用您控制的公钥和证书替换服务器的公钥和证书。如果您随后使用 --no-check-certificate 参数要求客户端跳过步骤 (2) 到 wget,您就可以完全访问加密数据。

这就是 Fiddler 调试代理允许访问 HTTPS 流量的方式,请参阅 https://www.fiddlerbook.com/fiddler/help/httpsdecryption.asp

2。从客户端应用程序中检索 session key

由于客户端应用程序知道 session key ,如果您可以提取它,您就可以解密流。我认为这就是您在问题中的想法。

wget 本身没有允许记录 session key 的选项(参见“HTTPS (SSL/TLS) Options”),但它看起来确实像它的 TLS 库,“GnuTLS”有一个调试选项,将执行您想要的操作,请参阅 "Debugging and auditing" in the GnuTLS docs :

SSLKEYLOGFILE When set to a filename, GnuTLS will append to it the session keys in the NSS Key Log format. That format can be read by wireshark and will allow decryption of the session for debugging.

尝试将 SSLKEYLOGFILE 环境变量设置为文件名,然后查看 wget 是否会将您的 TLS session key 记录到该文件?您可能需要使用 GnuTLS 的调试版本重新编译 wget。我自己还没有尝试过。

关于php - 我可以从 HTTP 客户端获取 TLS secret 来解密我自己的 HTTPS 对话吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43094320/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com