使用 Wireshark 解密SSL | 网站调试时使用 | 笔记

标签: none

Wireshark 解密SSL 有两种办法
1.使用预主密钥来解密SSL (pre-master secret key)
2.使用RSA密钥解密SSL (不推荐)

本文使用第二种方法来做网站调试.

使用第二种方式解密SSL 有几个特定的条件.
1.不能使用ECDHE的加密方式.
2.需要有网站的私钥
3.不支持TLSv1.3

1.打开 Wireshark 点击 Edit, 选择 Preferences. Preferences 窗口会打开,在左侧找到 Protocols --> SSL.

DHE1.jpg
使用RSA密钥解密SSL的不再常用。Diffie-Hellman协商的会话不直接使用RSA密钥. 它们生成一次性密钥,仅存储在RAM中,使用磁盘上的密钥加密。

如果您之前使用RSA密钥解码流量,并且它不工作,则可以通过启用SSL日志记录来确认目标计算机正在使用Diffie-Hellman交换。
Snipaste_2019-07-09_18-19-46.png

要打开日志记录,请单击工具栏菜单中的Edit,然后选择Preferences。展开左侧的Protocols菜单项,然后向下滚动到SSL。在此处,您可以单击Browse按钮并设置SSL日志的位置。

设置位置后,所有SSL交互都将记录在指定的文件中。
DHE3.jpg

使用启用SSL的主机捕获会话,然后检查日志。具体来说,您应该滚动,直到找到协商TLS握手的帧。你可能会在密码字符串中看到一个告密的DHE条目。

这意味着启用了Diffie-Hellman密钥交换。在我的例子中,Apache特别使用具有椭圆曲线键的Diffie-Hellman,它由字符串ECDHE表示。

再滚动一下,您可能会发现无法找到主密钥。
DHE4.jpg

如果您的日志看起来像这样,并且您无法使用RSA密钥解密流量,则您别无选择,只能切换到上面的pre-master secret方法。

如果是nginx 在调试的时候需要把加密方式切换到没有ECDHE的套件上,调试完成在切换回去.

ssl_ciphers           AES128-GCM-SHA256;

可以在这里查找 Security/Server Side TLS

How to Decrypt SSL with Wireshark


扫描二维码,在手机上阅读!

添加新评论