为啥Wireshark无法解密HTTPS数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥Wireshark无法解密HTTPS数据相关的知识,希望对你有一定的参考价值。
HTTPS的通讯是加密的,所以默认情况下你只能看到HTTPS在建立连接之初的交互证书和协商的几个消息而已,真正的业务数据(HTTP消息)是被加密的,你必须借助服务器密钥(私钥)才能查看。即使在HTTPS双向认证(服务器验证客户端证书)的情况下,你也只需要服务器私钥就可以查看HTTPS消息里的加密内容。 1. 配置Wireshark选中Wireshark主菜单Edit->Preferences,将打开一个配置窗口;窗口左侧是一棵树(目录),你打开其中的Protocols,将列出所有Wireshark支持的协议;在其中找到SSL并选中,右边窗口里将列出几个参数,其中“RSA keys list”即用于配置服务器私钥。该配置的格式为: ,,, 各字段的含义为: ---- 服务器IP地址(对于HTTPS即为WEB服务器)。 ---- SSL的端口(HTTPS的端口,如443,8443) 参考技术A 但是HTTPS的通讯是加密的,所以默认情况下你只能看到HTTPS在建立连接之初的交互证书和协商的几个消息而已,真正的业务数据(HTTP消息)是被加密的,你必须借助服务器密钥(私钥)才能查看。即使在HTTPS双向认证本回答被提问者采纳 参考技术B wireshark 软件本身就是一个网络数据包抓包程序,它根据用户指定的抓包规则,抓取用户需要的特定的网络数据包,至于说对于抓到的数据包如何处理?那是用户自己的事情,该软件并不具有任何的网络数据解密、以及分析功能。这些都需要靠用户自己去对相应的数据包进行分析。从自签名证书到wireshark解密https
参考技术A 以前使用库写过一个https的特定算法的解密,整个测试过程比较麻烦,这边记录下测试准备内容.HTTPS正常情况下使用的证书都是由CA结构颁发的,浏览器内置了根证书,这样我们在访问网站的时候通过多级校验(这个多级认证的意思是,比如我的证书是由A来颁发的,那A是否合法那,A的证书是由B来颁发的,B的证书又是由C来颁发的,最终C是根证书,C证书内置在浏览器中,通过多级认证来完成对服务器认证),来实现对网站的认证。
对于我们自己做的自签名证书,浏览器在打开我们网站的时候,会进行安全提示,因为可能存在着中间攻击,如果用户准许访问还是可以访问的。
对于我们内部测试来说,或者我们局域网使用,是没有问题的,我们也可以通过把证书存入的方式,防止下次再出告警;生成私钥和证书,主要是通过openssl工具来生成的。
CSR文件证书签名请求文件,包含了服务器的密钥对,CA按照会校验这个文件,然后验证CSR请求文件。
执行命令:
需要填些信息,自签名的除了密码,其他的无所谓。
最终生成了密钥对文件和CSR文件。
看下内容:
显示:
openssl的命令实在是复杂,这是抄的两个,-signkey是指明使用的密钥对,-in 表示csr文件,-days表示有效期,out最终生成的x509格式的证书文件。
有时候需要PKCS#12 格式即.p12结尾的证书,命令如下:
生成test_cert.p12 文件,需要输出密码 12345m
单独提取公钥的命令:
加密的可以通过:
命令查看,得到私钥:
保存为test_private.pem
找到conf下面的server.xml 编辑:
port: 指明 https的端口为7443
ciphers: 为密钥套件,故意配置几个容易解密的,便于测试,生产环境不能这样用。
keystoreFile:证书文件位置
keystorePass: 证书密码
keystoreType:证书类型。
在编辑地方,找到“首选项”
配置解析的ip,端口,协议和对应的私钥文件,非加密的私钥文件。
还遇到一个坑,我连vpn测试的,结果抓不到,其实设置下就可以抓到包了,如下图:
找到vpn的虚拟网卡,勾上一个选项。
我们因为已经配置了私钥,所以可以通过wireshark抓包并且直接解密,解密的https的报文颜色为淡绿色,如下:
注意: 如果你解密不了,可能的原因是,开始抓包的时候,https的交互已经完成,可以重启浏览器连接下试试,如果再不行,重启后台的服务,开始抓包的时候一定要确保https的前面的协商过程也在抓的包里面。
以上是关于为啥Wireshark无法解密HTTPS数据的主要内容,如果未能解决你的问题,请参考以下文章