如何解密服务使用wireshark服务SSL流量?

使用fiddler会导致某些应用程序在我的Windows机器上停止正常工作。 我想使用wireshark来解密我的tomcat和远程服务器之间的所有ssl流量。 所有流量均为https。

我能够设置环境变量SSLKEYLOGFILE并解密浏览器生成的所有SSL流量。 但这不适用于服务呼叫服务。 有权访问tomcat的私钥不再有用,因为有一些叫做前向保密的东西(我对此并不了解)。 从我读到的访问会话密钥是最简单的wireshark解密方式。

如果有人可以回答以下任何一个问题,我的问题就可以解决了。

1>有没有办法让tomcat 8将会话密钥吐出到文件中,以便wireshark可以使用它来解密SSL流量。 我正在使用java 8。

2>是否有一个工具不通过代理重定向流量,但能够解密我的机器上的SSL流量?

如果你有以下情况,你可以这样做:

  1. 服务器的私钥(仅限RSA)
  2. 您可以限制用于TLS握手的密码套件

脚步:

  1. 获取服务器的私钥并将其提供给Wireshark。
    1. 转到Wireshark的首选项| 协议| SSL
    2. 点击“RSA密钥列表”旁边的“编辑…”
    3. 将RSA私钥添加到wireshark可用的密钥列表中
  2. 配置您的客户端以限制TLS密码套件,以便没有可用的ECDHEDHE密码套件。 可接受的密码套件的示例是SSL_RSA_WITH_3DES_EDE_CBC_SHATLS_RSA_WITH_AES_128_CBC_SHA256

你必须限制密码套件的原因是因为这些天,TLS将使用短暂的密钥交换算法( DHE !)。 这就是完美前瞻性保密(PFS)的作用。 你必须打破PFS,以便使用受损的RSA密钥(你通过使用Wireshark监听它“妥协”)来嗅探对话。

好消息是,您不必乱用客户端或服务器来删除短暂的密钥,就像您使用Web浏览器一样。 坏消息是您必须将服务器密钥暴露给另一台主机(运行Wireshark的工作站), 并且您必须降低对话的安全性。 但这仅用于测试,对吧? ;)

您可以使用extract-ssl-secrets工具从任何Java应用程序中提取 Wireshark所需的密钥。

  • 从https://repo1.maven.org/maven2/name/neykov/extract-ssl-secrets/1.0.0/extract-ssl-secrets-1.0.0.jar本地下载jar。 确保保持文件名相同 – extract-ssl-secrets-1.0.0.jar。
  • CATALINA_OPTS="${CATALINA_OPTS} -javaagent:/extract-ssl-secrets-1.0.0.jar=/tmp/secrets.log"CATALINA_BASE/bin/setenv.sh (如果缺少则创建它)
  • 使用wireshark -o ssl.keylog_file:/tmp/secrets.log启动Wireshark wireshark -o ssl.keylog_file:/tmp/secrets.log
  • 开始捕获流量 – 它应该在运行中解密

如果它不能立即使用,请参阅故障排除部分 。