Firefox Snap 115中启用TLS追踪/日志以排查HTTP/3双向认证问题
我最近在折腾Firefox Snap(115版本)里的一个HTTP/3双向认证的TLS问题,想让浏览器输出能显示握手解析过程、以及基于证书存储选项做决策的日志,但折腾了好久都没拿到想要的信息。先跟你说说我已经试过的方法,再聊聊可能有用的调整方向:
已尝试的操作
拼凑环境变量日志配置:我把网上搜来的各种日志参数凑成了一个大环境变量,启动命令是这样的:
MOZ_LOG="timestamp,pipnss:5,cert_storage::*:5,nsSocketTransport:5,nsHostResolver:5,nsHttp:5,neqo_http3::*:5,neqo_transport::*:5,pkix:5" /snap/bin/firefox >trace.log 2>&1虽然输出了一堆日志,其中
pipnss的内容看起来相关性很高,但就是找不到和HTTP/3证书验证、PKIX逻辑或者证书存储相关的条目。我怀疑是不是漏了某个拼写正确的C/Rust组件名称?尝试用tstclnt工具测试:本来想脱离浏览器上下文,用tstclnt工具来测试,但我的Firefox Snap里根本没带这个二进制文件,装libnss3又只能拿到老版本,和当前浏览器版本不兼容,完全没法用。
尝试带追踪编译:想着通过预处理器宏(比如TRACING)重新编译Firefox来开启更详细的日志,但目前还没成功,而且我的发行版编译起来老是失败(FTBFS),这条路暂时走不通。
可能有用的日志配置调整
针对HTTP/3双向认证的TLS日志,你可以试试在MOZ_LOG里补充这些组件,应该能拿到更相关的内容:
neqo_tls::*:5:Neqo是Firefox的HTTP/3实现,这个模块专门负责HTTP/3的TLS握手和证书处理细节ssl:*:5:NSS的SSL核心模块,会输出通用TLS握手的详细过程,包括双向认证时客户端证书的选择逻辑cert_verifier:*:5:证书验证相关的组件,能看到证书解析、信任链构建的完整流程pkix_build:*:5:PKIX信任链构建的详细日志,会显示证书存储里的选项如何被选中和验证
调整后的完整启动命令可以是:
MOZ_LOG="timestamp,pipnss:5,cert_storage::*:5,nsSocketTransport:5,nsHostResolver:5,nsHttp:5,neqo_http3::*:5,neqo_transport::*:5,neqo_tls::*:5,ssl:*:5,cert_verifier:*:5,pkix:*:5,pkix_build:*:5" /snap/bin/firefox >trace.log 2>&1
另外要注意Snap的沙箱限制:因为Snap是沙箱环境,可能有些日志输出会被限制,或者证书存储的路径和常规版本不一样。你可以检查下trace.log里有没有关于证书存储加载失败的提示,这可能是为什么看不到相关日志的原因之一。如果还是不行,记得先关闭Firefox的所有进程,再用上面的命令启动,避免已有进程影响日志输出。
备注:内容来源于stack exchange,提问作者anx

