使用OpenSSL

时间:2017-04-06 06:52:32

标签: awk

我的目标是输出服务器使用的每个SSL证书的模数(链中的服务器和证书)。我使用这个bash脚本从服务器获取所有SSL证书(在google.nl情况下,它是3),然后使用awk我很好地将它拆分成3个(或更少)不同的文件,每个文件包含一个证书并计算每个他们。

a="$(openssl s_client -showcerts -connect www.google.nl:443 </dev/null 2>/dev/null  | sed -ne '/BEGIN/,/END/ p')" \
    | echo "$a" | awk 'split_after == 1 {n++;split_after=0}
    /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'; \
    for i in `ls cert*`; do openssl x509 -noout -modulus -in $i; done

现在这解决了我的问题,但我觉得我通过在文件中保存证书等来做不必要的工作。我可以以某种方式动态计算模数,而不保存到文件中吗?

1 个答案:

答案 0 :(得分:1)

这有点困难,因为x509只想处理单个证书,但可以这样做:

openssl s_client -showcerts -connect www.google.nl:443 | \
awk 'BEGIN { x509 = "openssl x509 -noout -modulus" }
     /-----BEGIN CERTIFICATE-----/ { a = "" }
     { a = a $0 RS }
     /-----END CERTIFICATE-----/ { print a | x509; close(x509) }'