2013-02-21 53 views
4

我想在Windows中打开浏览器,转到HTTPS站点,并在使用Wireshark捕获数据包时执行一系列操作。然后,我想使用加密的数据包捕获来查看解密的HTTP流量。如果您放弃浏览器,访问服务器或添加MITM,我知道有很多方法可以执行此操作(如下所示),但当您仅限于上述方案时,这些方法都不起作用。这里是我的典型方法:如何从浏览器SSL/TLS会话导出主密钥?

服务器:对于我有服务器私钥的站点,请使用Wireshark的内置SSL解密。

MITM:SSL代理(例如Burp套件)将允许查看解密的流量,但这需要使用与服务器使用的不同的证书和密钥对。

浏览器:openssl的s_client可以连接,发出请求并导出主密钥,但这不会显示关联的网页或运行javascript来计算后续请求参数。

有没有办法将主密钥从“普通”浏览器导出,以便以后可以使用它来解密浏览器会话的数据包捕获?

例如,当浏览器关闭时SSL/TLS状态存储在磁盘上?如果是这样,我将如何访问它?它在浏览器运行时是否可以在内存中访问(如果有的话,我怎样才能找到它)?

或者,是否所有由操作系统(Windows)存储的SSL状态数据都无法直接访问?

另外,是否有办法强制浏览器使用特定的主密钥(以及任何其他关联的SSL状态数据,如会话ID等)用于特定的HTTPS连接?如果是这样,我可以使用s_client设置SSL会话,然后将密钥数据传输到浏览器并在同一会话中打开一个新连接。这将通过不同的方式实现相同的目标。

回答

8

对于使用NSS库(例如Firefox)的浏览器,您可以设置SSLKEYLOGFILEenvironment variable,这将导致NSS保存必要的秘密。然后您可以直接在Wireshark中使用该文件。还有更多的信息可以找到here

相关问题