Ich habe eine PKCS12-Datei, die die vollständige Zertifikatskette und den privaten Schlüssel enthält. Ich muss es in 3 Dateien für eine Anwendung aufteilen. Die 3 benötigten Dateien lauten wie folgt (im PEM-Format):
- eine unverschlüsselte Schlüsseldatei
- eine Client-Zertifikatdatei
- eine CA-Zertifikatdatei (Root und alle Zwischenprodukte)
Dies ist eine häufige Aufgabe, die ich ausführen muss. Daher suche ich nach einer Möglichkeit, dies ohne manuelle Bearbeitung der Ausgabe zu tun.
Ich habe folgendes versucht:
openssl pkcs12 -in <filename.pfx> -nocerts -nodes -out <clientcert.key>
openssl pkcs12 -in <filename.pfx> -clcerts -nokeys -out <clientcert.cer>
openssl pkcs12 -in <filename.pfx> -cacerts -nokeys -chain -out <cacerts.cer>
Dies funktioniert einwandfrei, die Ausgabe enthält jedoch bag-Attribute, mit denen die Anwendung nicht umgehen kann.
Nach einigem Suchen fand ich eine vorgeschlagene Lösung, die Ergebnisse durch x509 zu leiten, um die Beutelattribute zu entfernen.
openssl x509 -in <clientcert.cer> -out <clientcert.cer>
Dies funktioniert, aber ich stoße auf ein Problem mit der Cacert-Datei. Die Ausgabedatei enthält nur eines der 3 Zertifikate in der Kette.
Gibt es eine Möglichkeit, zu vermeiden, dass die bag-Attribute in die Ausgabe des Befehls pkcs12 einbezogen werden, oder eine Möglichkeit, dass die Ausgabe des Befehls x509 alle Zertifikate enthält? Gibt es außerdem eine Möglichkeit, die Ausgabe von pkcs12 in x509 umzuleiten, wenn es die einfachste Lösung ist, x509 zu durchlaufen, anstatt die Datei zweimal zu schreiben?
quelle