从networking或pcap文件中提取SSL证书

如果有人能指点我一个工具或方法来从实时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是您的客户端连接到的端口。