p=yourserver.com
t=$(mktemp -d)
cd $t
# hole die ganzen Zertifikate ab bis zur root-CA
openssl s_client -connect $p:443 -showcerts -verify 5 -CApath /etc/ssl/certs/ -sess_out https.txt > https2.txt
# Mit Q kann man den Ablauf beenden um das Warten auf den Timeout abzubrechen.
# Speichere die enthaltenen Zertifikate in die Dateien 1..n:
awk 'BEGIN {n=0;o=0} (/BEGIN CERTIFICATE/){n++;o=1}(o==1){print >> n }(/END CERTIFICATE/){o=0}END{print n}' https2.txt
# Das erste ist das vom eigentlichen Server, die weiteren die Chain und das letzte dann die Root-CA.
# TODO: das mit "bis zur root-CA" klappt nicht immer, warum?
# Hole die OCSP aus dem Server-Zertifikat:
ocsp=$(openssl x509 -in 1 -noout -text | perl -ne 'if (m;OCSP - URI:http://(.*)/?;) {print "$1\n"}' )
# Die Chain bis zum Root werden denn in umgekehrter Reihenfolge n..2 als -issuer übergeben und das vom Server als -cert.
# TODO die issuer automatisch korrekt einfügen
openssl ocsp -issuer 3 -issuer 2 -cert 1 -text -host $ocsp:80 > https3.txt
# Auf error-out sollte dann Response verify OK erscheinen.
# Die genauen Details der Prüfung stehen in https3.txt
# Wenn alles geprüft ist aufräumen
cd
rm -rf $t
Comments
0 B
|👍
/👎