如果有人能指点我一个工具或方法来从实时HTTPS连接(直接从networking)或networking跟踪文件(pcap文件)中提取SSL / TLS证书,我将不胜感激。 我尝试使用ssldump,但我无法提取证书。 我也可以使用Wireshark(手动),但我想以自动的方式做到这一点。 我为此使用Linux平台。 谢谢
编辑:我想提取的SSL证书比服务器发送到客户端(浏览器)在SSL握手期间。 我想使用networking嗅探器(tcpdump)来捕获networking中的SSL连接,然后从生成的pcap文件中提取证书(或者直播)。
您是否需要特定格式的证书(PEM / DER / …)?
ssldump可以使用-N选项显示parsing的ASN.1证书,并使用-r读取pcap文件作为input。 以下命令可以以可读的forms向您显示证书。
ssldump -Nr file.pcap | awk 'BEGIN {c=0;} { if ($0 ~ /^[ ]+Certificate$/) {c=1; print "========================================";} if ($0 !~ /^ +/ ) {c=0;} if (c==1) print $0; }'
awk脚本不是最干净的,但做的工作(改进比欢迎)。
ssldump的-x选项会显示实际的数据包有效载荷(packet_data)。 这将包括logging层和握手协议字段(即不是只有证书)。 一个更智能的脚本/代码可能能够从那里提取它并将其转换为更常见的格式。
从具有SSLstream量的PCAP文件(如HTTPS)中提取X.509证书的最简单方法是将PCAP加载到免费的开源软件NetworkMiner中。 您将在NetworkMiner的“文件”(Files)选项卡下find提取的证书。
NetworkMiner自动从SSL / TLS会话中将X.509证书提取到磁盘,并转到以下任一TCP端口:443,465,563,992,993,994,995,989,990,5223,8170,8443,9001和9030 。
您可以在这里下载NetworkMiner: http : //sourceforge.net/projects/networkminer/
另外,请参阅本指南以了解如何在Linux上安装和运行NetworkMiner: http : //www.netresec.com/? page=Blog&month=2014-02&post=HowTo-install-NetworkMiner-in-Ubuntu-Fedora-and-Arch- Linux的
实时连接通常使用在会话开始时设置的会话密钥进行encryption。 即使拥有所有密钥,也不能窥探他们,除非您有该会话的握手转储。
但是你可以看到哪些主机和端口正在通信。 服务器SSL证书通常是端口和主机绑定的,所以您可以轻松检查服务器SSL证书
openssl s_client -connect example.com:443
其中example.com是一个服务器, 443是您的客户端连接到的端口。