我使用以下命令导出了一个新的用户变量 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 该文件,你会看到它已被填充。有关更多信息,请访问: