打开 Firefox 或 Chrome 写入 SSLKEYLOGFILE

打开 Firefox 或 Chrome 写入 SSLKEYLOGFILE

我使用以下命令导出了一个新的用户变量 SSLKEYLOGFILE:

export SSLKEYLOGFILE=($HOME)/sslkeylog.log

如果我正常打开 Firefox 或 Chrome,则不会 安全密钥日志文件已创建(即使创建,即使我通过浏览器浏览 SSL 流量,它也是空的)。是否有特殊的终端命令来打开启用了这些功能的浏览器?如果有,那么是什么?

答案1

省略括号

export如果在命令后执行(不带参数),您将看到SSLKEYLOGFILE设置为(/home/username)/sslkeylog.log,这不是有效路径。省略括号:

export SSLKEYLOGFILE=$HOME/sslkeylog.log

“正常”打开的应用程序仍然看不到环境变量

根据Bash 参考手册

export [-fn] [-p] [name[=value]]

Mark each name to be passed to child processes in the
environment.[...]

...同样仪表板手册

 export name ...
 export -p
        The specified names are exported so that they will appear in the
        environment of subsequent commands.[...]

...导出的环境变量只会传递给同一进程或子进程中的后续命令。因此,如果您打开终端并执行命令export SSLKEYLOGFILE...,则只有从同一终端(或更准确地说,该终端内的同一 shell 进程)生成的应用程序(进程)才会看到环境变量。如果您运行google-chrome(-stable) 从该终端,它将看到该SSLKEYLOGFILE变量并写入指定的文件。

如果你打开谷歌浏览器通过应用程序启动器(我认为你考虑一下普通的),它不会是终端的子进程,因此不会意识到该SSLKEYLOGFILE变量。

还要注意,如果 chrome 已在运行,则google-chrome-stable在终端中执行将在已运行的进程中打开一个新窗口。您可以通过pstree在终端中执行来查看进程树。

由于这不是问题的一部分,我不会在这里详细介绍,但设置持久环境变量(会话范围或系统范围)在Ubuntu 社区维基

答案2

我想与其他人分享,上面提到的解决方案在 ubuntu 18.10 上使用 chrome 对我有用

您可以从终端启动一个网站,使用

$ google-chrome https://askubuntu.com/questions

对我来说,我想在 wireshark 中读取 tcp 对话。

NSS 可以写入密钥日志,以便外部程序可以解密 TLS 连接。Wireshark 1.6.0 及以上版本可以使用这些日志文件解密数据包。您可以通过编辑→首选项→协议→SSL→(Pre)-Master-Secret 日志文件名告诉 Wireshark 在哪里找到密钥文件。

注意,我没有尝试过 Firefox。它可能会起作用,但我不想花时间去弄清楚。Mozilla 指出,默认情况下,Debian 禁用了 Firefox。 https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format

由于我是新成员,论坛不允许我对该解决方案进行投票。

编辑:在 wireshark v3.2.7(作为参考,为 2021 年 2 月)中,协议列表中不再有“SSL”选项。请改用“TLS”

答案3

我解决这个问题的方法是使用 chromium,因为 Firefox 49,48 在 Debian 和 Kali Linux 上禁用了此功能,所以首先必须执行此命令:

nano ~/.bashrc

将其附加到文件末尾

export SSLKEYLOGFILE=~/.ssl-key.log

类型Ctrl+X保存文件。然后从控制台执行 chromium 以传递以下标志:

chromium --ssl-key-log-file=~/.ssl-key.log

如果你 cat 该文件,你会看到它已被填充。有关更多信息,请访问:

developer.mozilla.org/NSS 密钥日志格式

如何使用 Wireshark 解密 SSL

相关内容