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