如果有人能指出我如何在
Linux OS上的客户端和服务器之间的握手阶段自动从实时网络流量中提取X.509证书,我将不胜感激.
一些类似的问题在Extracting SSL certificates from the network or pcap files年前一段时间被安静地问过,但答案是不完整的.
答案说使用以下命令
ssldump -Nr file.pcap | awk 'BEGIN {c=0;} { if ($0 ~ /^[ ]+Certificate$/) {c=1; print "========================================";} if ($0 !~ /^ +/ ) {c=0;} if (c==1) print $0; }'
解决方法
您是否尝试从数据包捕获中专门提取它,或者您是否只想在握手期间从命令行获取证书?
如果您只需要获取证书本身,则可以执行以下操作:
echo | openssl s_client -connect sub.domain.tld:443 | openssl x509 -noout -text
如果在没有回滚到openssl的情况下运行命令,那么您可以看到有关证书的更多详细信息,但第二个openssl命令会提取证书本身.
需要回显管道才能使OpenSSL shell干净地退出以返回到Bash提示符.
这显然会将所有内容写入STDOUT.如果要保存证书,则需要通过使用>结束命令来重定向到文件. filename.crt.如果证书链中存在任何错误,它们将不会以文件结尾,而是写入STDERR.