Code Schnipsel: OpenSSL CSR mit Subject Line erstellen

Weil ich es jedes mal wieder nachschlagen muss (also alle ein bis anderthalb Jahre), hier kurz notiert wie man in OpenSSL ein CSR (Certificate Signing Request) erstellt und dabei das ganze Subject schon im Kommando übergibt (und dadurch der grausligen Tippfehlerproblematik im interaktiven Modus entgeht, bzw. leichter gleich eine ganze Ladung erstellen kann):

openssl req -new -subj \
'/C=DE/ST=Bundesland/L=Stadt/O=Firma/OU=Abteilung in Firma/CN=sub.domain.de' \
-key sub.domain.de.key -out sub.domain.de.csr

Code Schnipsel: SSL Infos Remote checken

Um die Infos aus einer Zertifikatskette aus dem Serveroutput zu überprüfen, kann man entweder per OpenSSL die Zertifikate herunterladen und seperat lesen oder aber direkt die s_client Ausgabe sed’en und grep’en:

echo QUIT | openssl s_client -showcerts -connect www.server.de:443 2>/dev/null | sed -ne '/2 s\:\//,/END CERT/p' | sed -ne '/BEGIN CERT/,/END CERT/p' | openssl x509 -noout -subject -dates

subject= /C=DE/O=Firma/OU=Abteilung/CN=CA Orga
notBefore=Dec 24 10:29:00 2000 GMT
notAfter=Dec 24 23:59:00 2036 GMT

Erster Teil übergibt QUIT an openssl s_client im zweiten Teil, weil dieser auf eine Eingabe wartet, im dritten Teil wird der generelle Teil der Kette gewählt (in diesem Teil der zweite), im dritten Teil wird die Ausgabe nochmals auf das eigentliche Zertifikat reduziert, was im vierten Teil in eine lesbare Ausgabe umgewandelt wird (hier nur subject um sicher zu sein, dass man das richtige Zertifikat liest und die Daten, worum es eigentlich bei der Abfrage ging, aber mit -text gäbe es alles zu sehen).

Wenn man es anständig skriptet kann man auch die ganze Kette mit den gewünschten Infos ausgeben, aber als kleiner Hack reicht das so.