Jeder kennt das, einmal im Jahr kommt das neue Zertifikat und mal wieder als pfx Datei. Mein Apache2 mag das Teil aber nicht also einmal umwandeln in was Verständliches bitte, sprich, pfx Zertifikat nach crt und key konvertieren.
Am Besten das pfx erstmal in einen eigenen Ornder schieben und dann geht es schon los, fangen wir mit dem key an. Am Anfang vielleicht mal ohne das „-legacy“ probieren, je nach Zertifikat und/oder System braucht ihr das nicht. Passiert mir aber seit ich Debian Bookworm habe öfters, das ich vom Provider noch legacy Zertifiakte bekomme die mein OpenSSL auf Bookworm als zu alt sieht.
Konvertieren
openssl pkcs12 -legacy -in mein.pfx -nocerts -out mein_key.pem
Enter Import Password:
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Das „Import Password“ ist das was auf eurer pfx Datei drauf ist. Der „PEM pass phrase“ ist das Passwort was ihr auf euren neuen key machen werdet, OpenSLL will es so und wird eine leere Eingabe nicht aktzeptieren.
Man bemerke also das wir jetzt einen Key haben der aber ein Passwort hat. Das ist gut für ein Backup File, etc. Wer damit im Server Betrieb nicht umgehen kann/will kann es auch ohne Passwort speichern (auf eigene Gefahr natürlich). Wir nennen es mal den „server“ key.
openssl rsa -in mein_key.pem -out mein_server_key.pem
Enter pass phrase for mein_key.pem:
writing RSA key
Jetzt die Zertifiakte. Das erste wird eures sein das zweite ist das Zwischenzertifikat vom Aussteller. Nicht vergessen … die „Bad Attributes“ will Euer Apache2 nicht haben, die müsst ihr noch kurz raus löschen.
openssl pkcs12 -in mein.pfx -out mein_cert.pem -nokeys
Enter Import Password:
Wer jetzt noch ein Root Zertifikat sucht wird es im pfx nicht finden, das muss er beim Aussteller abholen. Falls es Digicert, GeoTrust oder thwate ist (steht in den Bag Attributes unter Issuer hinter CN) kann sich hier gleich umschauen: https://www.digicert.com/kb/digicert-root-certificates.htm#roots
Verifizieren
Beim Zertifikat mache ich oft irgend einen Fehler durch zu schnelles rumhantieren. Daher lohnt es sich kurz mal die Zertifikatskette zu verifizieren. Dazu braucht ihr aber Euer Zertifikat und euer Intermediate in separaten Dateien.
openssl verify -show_chain -CAfile root.pem -untrusted intermediate.pem cert.pem
Das „untrusted“ muss mit rein, da OpenSSL sonst nach dem Root Cert aufhört zu checken. Klingt komisch? Scheint aber so. Wem das zu blöde ist, der kann das auch online komplett in einen der online SSL Checker pasten natürlich, wie z.B.: https://tools.keycdn.com/ssl
Auch wenn so nicht beschrieben kann man da alle drei hintereinander rein pasten und fertig.
Server Check
Ganz am Ende nicht vergessen den ganzen Server wo ihr das Zertifikat rein gekloppt habt zu checken. Ich kann da nur den hier empfehlen: https://www.ssllabs.com/ssltest/
Das war es schon, wer noch Fragen hat oder unstimmigkeiten entdeckt, gerne einen Kommentar hinterlassen. Mir ist auch noch aufgefallen das ich schonmal so einen Eintrag bei mir gemacht habe zum Thema pfx Zertifikat nach crt und key konvertieren, da dürfte aber das Selbe drin stehen ausser dem Verweis auf den „legacy“ Parameter: p12 oder pkcs12 nach pem bzw. crt und key konvertieren