SSLKEYLOGFILE 环境变量不填充任何文本文件



我的操作系统是Windows 10 64位。我使用最新版本的Firefox和Chrome。

我想保存预主密钥,以便将它们与 WireShark 一起使用。

为此,我找到了许多教程,这些教程都建议使用 SSLKEYLOGFILE 环境变量。

但是,无论我在此变量中输入的路径如何,Firefox(普通版和开发人员版)或Chrome都不会创建任何文件。即使我重新启动这些浏览器或操作系统也是如此。当我清除浏览器上的缓存时也是如此。

我找到了一种使用 Chrome 设置 SSLKEYLOGFILE 变量的替代方法,方法是使用以下参数启动浏览器:

--ssl-key-log-file=PATH

虽然此参数确实会创建日志文件,但它永远不会填充。它仍然完全空。

使这个问题更烦人的是,我不知道是否有任何调试日志至少可以让我知道发生了什么。

有人对如何解决这个问题有想法吗?

在 Chrome 和 Firefox
Windows 10 64 位 [版本 10.0.17763.379] 中均已验证

我不会在Chrome上使用--ssl-key-log-file标志。在我的测试中,它没有效果。

获取 SSL 键盘日志文件的步骤

  1. 将目录更改为您或您的程序有权访问的目录。我正在使用桌面文件夹。

    C:> cd $HOMEDesktop
    
  2. 设置SSLKEYLOGFILE变量。这将为用户 (HKCU) 设置它。要为计算机 (HKLM) 设置它,请将/m标志添加到命令末尾。

    PS C:UsersrjDesktop> SetX SSLKEYLOGFILE "$(get-location)ssl.log"
    
  3. 验证变量是否已在单独的电源外壳窗口中设置(SetX 不适用于当前窗口)。

    PS C:UsersrjDesktop> Get-ChildItem ENV: | findstr SSLKEYLOGFILE
    SSLKEYLOGFILE                  C:UsersrjDesktopssl.log
    

    您还可以通过转到"控制面板">"系统"和"安全">"系统">"高级系统设置">"高级"选项卡>"环境变量">"用户变量"来验证 SSLKEYLOGFILE 是否为用户变量。应会看到类似于 powershell 示例的列表,其中的值是一个目录。

  4. 打开Chrome/Firefox并转到像 https://stackoverflow.com 这样的https网站。

  5. 您应该会看到桌面上显示ssl.log

最终结果的图像

延伸阅读

  • 2018-12-07, F5, 解密 SSL 流量:关于执行上述操作但跨平台的好文章
  • 2019-03-18, Mozilla, NSS 密钥日志格式 :SSLKEYLOG文件格式
  • 2018-08-17, Wireshark bugzilla, 添加TLS 1.3支持:对TLS1.3具有良好的测试pcap/SSLKEYLOG内容(见评论83)

你提到你正在使用Wireshark。如果您使用它从捕获中的 TLS 加密流导出文件,本文可能会对您有所帮助。

我遇到的一件事是:当您关闭窗口时,Chrome并不总是完全关闭。有时它会在后台保持打开状态。使用 Windows 进程资源管理器列出所有进程并使 cure Chrome 已关闭。此外,重新启动Chrome后,您可以在进程资源管理器中双击它,然后选择"环境"选项卡以列出其环境中设置的所有变量。确保 SSLKEYLOGFILE 显示在该列表中。然后,Chrome 会将密钥发送到指定的文件。

首先,所有问题是浏览器受到更好的保护并且该漏洞已修补,这就是为什么您无法捕获任何SSL的原因。我不知道细节。但是带有 --no-sandbox(linux) 选项的 chrome 在运行时将使您能够从第一次尝试开始就毫无问题地捕获 ssl/tls 密钥,因此您可以玩数据包的解码。从来没有在窗户上尝试过。

这对我有用...

在 Linux 中正常设置 SSKEYLOG env: 变量。 只需将其指向SSLK键的保存位置即可.log

Windows System/advance/env vars/user variables. 添加 SSLKEYLOG文件,其中包含首选保存位置 C:/user/sslkey 的路径.log 关闭并在此处完成。

NSS_ALLOW_SSLKEYLOG=1 是 Firefox 高级选项中布尔值所缺少的。 它也已从常规版本中删除,但仍在开发运营版本中。只是没有列出。

下载并安装 Firefox 的开发运营版本 如果在 Linux 上打开一个终端,则从其 exe 启动它。 窗口只需从图标打开它。

转到关于:配置 创建一个 NSS_ALLOW_SSLKEYLOG=1 的新布尔值并将其设置为 true。 退出 现在创建一个新的符号/图标链接到新的开发版本火狐版

当你在Linux中从终端运行Firefox时,sskeylog应该被创建并开始填充。

从 Linux 中的任务栏图标运行它,它不会制作或更新键盘日志(以防万一您不希望每次打开浏览器时都填充它)。

在Windows中,您必须禁用env var,否则每次打开任何支持SSLK键日志记录的浏览器时,它都会不断填充。

关于这一点,Opera和Vivaldi应该在不更改高级选项的情况下工作。

最后.. Open Wireshark 转到 编辑/首选项/协议/TLS 并将 SSL 密钥的路径.log放在预主密钥日志框中。 单击"确定"。

关闭一切.. 启动 Wireshark 启动浏览器(从 Linux 中的终端)。 您应该开始看到SSLkeylog开始填充,并在Wireshark的选项卡中看到额外的解密选项。

玩得开心:)

第一个解决方案:
重启Chrome

第二种解决方案:
使用火狐

浏览器

最新更新