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

为了解决问题,我需要查看通过SMTP发送到我的sendmail服务器时的电子邮件的样子。 上游服务器需要SMTP连接才能使用STARTTLS,因此数据包捕获仅显示encryption的数据。

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

我看到几个可以在线参考的wireshark中的RSA key listsfunction(例如: https : //support.citrix.com/article/CTX116557 )。 但是,这似乎还没有为我工作。

这与前向保密有关吗? 我可以不在新的协议/密码上做这个吗?

    只要RSA密钥交换完成,对RSA私钥的了解就足够了。 现代系统改为使用Diffie Helmann密钥交换(DHE *,ECDHE *密码)来提供前向保密。 在这种情况下,私钥只用于对服务器进行身份validation,而不用于密钥交换,因此对私钥的了解对获取encryption密钥没有帮助。

    相反,由于这是用来派生encryption密钥的,所以需要SSL 预主密钥。 虽然有些浏览器支持在某些特殊的debugging模式下输出这个秘密,但其他客户端通常不会这样做

    至于你的具体问题,我会试试一个男人在中间的“攻击”,即使客户端获得encryptionstream量logging所有的stream量。 这与HTTPS的中间代理中的man类似,只是它支持初始的普通连接,并且知道STARTTLS升级到TLS。 从快速search中我发现了starttls-mitm , sslsplit对此有一些betatesting支持。 当然,客户端需要连接到中间代理中的人,并信任它获取的证书,这可能是原始的服务器证书,因为您似乎有权访问此证书。

    另一个select是在特定的MTA中启用debugging,以便为您的特定问题提供足够详细的信息。

    这可能是wireshark SMTP协议parsing器不知道如何处理TLS / SSL。 但也许你可以使用HTTP协议parsing器。 去edit-> preferences-> protocols-> HTTP并将端口添加到SSL / TLS端口