OpenSSL Konvertieren Sie PEM in PFX mit dem RSA PRIVATE-Schlüssel

4129
thxmike

Ich versuche, OpenSSL zum Konvertieren einer PEM-Datei und eines privaten RSA-Schlüssels in eine PFX-Datei zu verwenden. Hier ist der Beispielbefehl, den ich versucht habe zu verwenden:

openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem 

Dabei erhalte ich folgende Fehlermeldung:

unable to load private key 9068:error:0906D06C:PEM routines:PEM_read_bio:no start  line:pem_lib.c:696:Expecting: ANY PRIVATE KEY 

Die cert-Datei sieht folgendermaßen aus:

-----BEGIN CERTIFICATE----- .... -----END CERTIFICATE----- 

und der private Schlüssel sieht so aus:

-----BEGIN RSA PRIVATE KEY----- .... -----END RSA PRIVATE KEY----- 

Ich habe etwas nach dem Fehler gesucht, aber noch keine Lösung gefunden.

BEARBEITEN

Nach einigen zusätzlichen Nachforschungen scheint es ein Problem bei verschiedenen Versionen von OpenSL zu sein.

Wenn ich es auf meinem OSX-System mit 0.9.8zh 14. Januar 2016 laufe, funktionieren diese Aussagen einwandfrei.

Wenn ich es jedoch auf einem Windows-Computer mit der Version OpenSSL 1.0.1p 9. Juli 2015 und OpenSSL 1.1.0g 2. November 2017 ausführen, erhalte ich die oben genannten Fehler.

1
Funktioniert bei mir! Hat `openssl rsa -in-noout -text` Details des Schlüssels oder einen Fehler anzeigen? Möglicherweise ist die private Schlüsseldatei beschädigt? Wenn es funktioniert, konvertieren Sie es mit `openssl pkcs8 -in in einen privaten PKCS # 8-Schlüssel -topk8 -nocrypt -out `und versuchen, damit eine PKCS # 12 zu generieren. garethTheRed vor 6 Jahren 0
@garethTheRed: Danke. Diese zusätzlichen Informationen waren sehr hilfreich und führten mich tiefer in das Problem. thxmike vor 6 Jahren 0

1 Antwort auf die Frage

0
thxmike

Nach einiger Zeit fand ich heraus, dass es die Powershell-Skripts waren, die die Schlüssel- und cert-Dateien generierten.

Mit Notepad ++ unter Windows und Tex-Edit Plus unter OSX zum Erkennen versteckter Zeichen habe ich festgestellt, dass die Dateien am Ende zusätzliche [cr] hatten.

Verwenden Sie den Befehl

openssl rsa -in <private key file> -noout -text openssl x509 -in <cert file> -noout -text 

Sind gute Überprüfungen für die Gültigkeit der Dateien

Da es sich bei meiner Quelle um base64-codierte Zeichenfolgen handelt, habe ich den Befehl certutil unter Windows verwendet (dh).

certutil -f -decode cert.enc cert.pem certutil -f -decode key.enc cert.key 

unter Windows, um die Dateien zu generieren. Sobald die Dateien korrekt waren, funktionierte der obige OpenSSL-Befehl wie erwartet.