2017-04-06 62 views
0

我的目標是輸出服務器使用的每個SSL證書(鏈中的服務器和證書)的模數。我使用這個bash腳本從服務器獲取所有SSL證書(在google.nl的情況下,它是3),然後使用awk將它很好地分成3個(或更少)不同的文件,每個文件都包含一個證書並計算每個文件的模數其中。獲取使用OpenSSL的服務器使用的每個SSL證書的模數

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

這是一個有點困難,因爲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) }' 
+0

正是我需要的,謝謝! – ChildinTime

相關問題