如何在数据包捕获中解密通过 SMTP 的 STARTTLS 通信(如果我有私钥)?

Mik*_*e B 7 ssl sendmail wireshark packet-capture starttls

为了进行故障排除,我需要查看电子邮件通过 SMTP 发送到我的 sendmail 服务器时的样子。上游服务器需要 SMTP 连接才能使用 STARTTLS,因此数据包捕获仅显示加密数据。

有没有办法使用wireshark来解密传输并查看?当然,假设我在我的 sendmail 服务器上使用了私钥?

我看到有几个程序可以在线参考RSA key listswireshark 中的功能(例如:https : //support.citrix.com/article/CTX116557)。但这似乎仍然对我不起作用。

这与前向保密有关吗?我可以不在较新的协议/密码上执行此操作吗?

Ste*_*ich 4

仅当完成 RSA 密钥交换时,了解 RSA 私钥才足够。现代系统改为使用 Diffie Helmann 密钥交换(DHE*、ECDHE* 密码)来提供前向保密。在这种情况下,私钥仅用于验证服务器,而不用于密钥交换,因此私钥的知识无助于获取加密密钥。

相反,需要SSL预主密钥,因为它用于派生加密密钥。虽然某些浏览器支持在某些特殊调试模式下导出此机密,但其他客户端通常不支持。

至于你的具体问题,我宁愿尝试中间人“攻击”,即使客户端获得加密流量,它也会以普通方式记录所有流量。这与 HTTPS 的中间人代理类似,只是它支持初始普通连接并了解 STARTTLS 升级到 TLS。通过快速搜索,我发现了starttls-mitm并且sslsplit对此有一些测试版支持。当然,客户端需要连接到中间代理并信任它获得的证书,这可能是原始服务器证书,因为您似乎有权访问它。

另一种选择是在特定 MTA 中启用调试,以防它为您的特定问题提供足够详细的信息。