解密由于 JMeter https 请求而生成的“加密警报”数据包(例如,通过 Wireshark)
Posted
技术标签:
【中文标题】解密由于 JMeter https 请求而生成的“加密警报”数据包(例如,通过 Wireshark)【英文标题】:decrypt `Encrypted Alert` packets generated due to JMeter https requests (e.g. via Wireshark) 【发布时间】:2020-03-07 22:10:11 【问题描述】:我按照该指南 https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/ 设置 Wireshark
以解密 TLS
流量。
我在 MacOS 上将 export SSLKEYLOGFILE=~/.ssl-key.log
添加到 ~/.bash_profile
,现在当我从同一终端窗口 open -a firefox
启动像 Firefox 这样的浏览器时,我看到 ssl-key.log
文件的大小变大了。但是,当我也从同一个终端窗口启动JMeter
并使用https
协议运行多个http samplers
时,ssl-key.log
没有增长。
我无法通过网络搜索 tls wireshark decrypt jmeter
找到有关该主题的信息。如何解密?我不仅需要与 JMeter 中的 View Results Tree
等捕获的请求相匹配的响应,还需要技术数据包,特别是 Encrypted Alert
的数据包。
【问题讨论】:
【参考方案1】:JMeter 对这个 SSLKEYLOGFILE
环境变量一无所知,如果您想通过 Wireshark 捕获源自 JMeter 的加密流量,您需要使用 RSA key approach
首先你需要get the private key from the website you're testing。
完成后,您需要在 Wireshark - Preferences - Protocols - TLS 中使用上述私钥配置协议解析器
完成后,您应该能够使用 Wireshark 解密传出请求。
如果您无法从您正在测试的网站获取 RSA 私钥,您仍然可以尝试使用 JMeter 的HTTP(S) Test Script Recorder 获取它,您需要首先生成 MITM 代理密钥库并通过修改以下内容让 JMeter 知道此密钥库JMeter Properties:
proxy.cert.file=proxyserver.jks
proxy.cert.type=JKS
proxy.cert.keystorepass=mc3VZAuZvgYzt6pIQq3w
proxy.cert.keypassword=BFsghQ0GBN7SxI0HWpkr
然后你需要通过 keytool 命令将 JKS 密钥库转换为 PKCS12
keytool -importkeystore -srckeystore proxyserver.jks -destkeystore proxyserver.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass mc3VZAuZvgYzt6pIQq3w -deststorepass mc3VZAuZvgYzt6pIQq3w
接下来可以extract encrypted RSA private key from the .p12 keystore:
openssl pkcs12 -in proxyserver.p12 -nocerts -out encrypted.key -password pass:mc3VZAuZvgYzt6pIQq3w -passout pass:mc3VZAuZvgYzt6pIQq3w
最后解密私钥以供以后在 Wireshark 中使用:
openssl rsa -in encrypted.key -out decrypted.key -passin pass:mc3VZAuZvgYzt6pIQq3w
生成的 RSA 密钥文件可以在 Wireshark 中使用
【讨论】:
德米特里,谢谢。我对密码学不太感兴趣,也许您可以澄清一下:1)您的方式是否使会话使用带有许多随机密钥的单个 RSA 无前向保密? 2)如果是(1)让JMeter了解SSLKEYLOGFILE并以与浏览器相同的方式使用它(可能通过更改HTTP采样器的源代码......)需要多长时间?以上是关于解密由于 JMeter https 请求而生成的“加密警报”数据包(例如,通过 Wireshark)的主要内容,如果未能解决你的问题,请参考以下文章