在 Linux 服务器上记录用于传出 SSL/TLS 连接的所有加密密钥

信息安全 tls openssl 嗅探器 线鲨 解密
2021-08-31 08:34:46

是否有一些环境变量适用于 SSLKEYLOGFILE 如何适用于依赖 NSS 的程序,但适用于 Linux 服务器上的所有传出 TLS / SSL 连接,而不仅仅是使用 NSS 的连接?

具体来说,我想对从 exim 守护进程到所有外部主机的流量进行 tcpdump 处理,以尝试调试问题,之后我需要能够对其进行解密。

如果有帮助,running 会ldd /usr/sbin/exim列出以下库(当然还有其他库)。

libssl.so.10
libcrypto.so.10
1个回答

NSS SSL Keylog 文件是一种使用用于 SSL/TLS 的 NSS 库从应用程序中提取 SSL 会话密钥的非侵入式方法,但没有标准方法可以在所有应用程序中执行相同操作。(一般的方法会涉及一个中间攻击的人,但这并不是真正不引人注目的。)

不过,直接从应用程序中提取会话密钥的想法更适用。libssl.so 表明 OpenSSL 正在(可能的)Linux 平台上使用。您可以使用 useLD_PRELOAD插入 OpenSSL 库(可能并非在所有情况下都有效)或附加带有适当断点的调试器。从 OpenSSL 应用程序中提取预主密钥中记录并进一步探索了这两种方法

作为故障排除的附加提示,虽然 Wireshark 1.12 能够解密 TLS 应用程序数据(并且可以使用 Follow SSL 流来查看通信),但它不会剖析 STARTTLS 握手后发生的 SMTP 流量(SMTPS 不受影响)。在 Wireshark 2.0(暂定发布日期为 2015 年 11 月,预发布版本可用)中,在 STARTTLS 之后正确识别 SMTP 协议。