it-swarm.com.de

Mit openssl kann kein privater Schlüssel abgerufen werden (keine Startzeile: pem_lib.c: 703: Erwartet: JEDER PRIVATER SCHLÜSSEL)

Ich habe eine .key-Datei, wenn ich das tue

openssl rsa -text -in file.key

Ich bekomme

unable to load Private Key
140000419358368:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: ANY PRIVATE KEY

Außerdem habe ich eine .cer-Datei und wenn ja

openssl x509 -text -in file.cer

Ich bekomme

unable to load certificate
140387178489504:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

Aber wenn wie gezeigt hier Ich führe den Befehl wie folgt aus:

openssl x509 -text -inform DER -in file.cer

Ich bekomme

Certificate:
    Data:
        Version: 3 (0x2)
        Some more information
        ...
-----BEGIN CERTIFICATE-----
MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NjcwDQYJKoZIhvcNAQEF
...
-----END CERTIFICATE-----

Aber das scheint mit dem Schlüssel nicht zu funktionieren, denn wenn ich renne

openssl rsa -text -inform DER -in aaa010101aaa__csd_10.key

Ich bekomme

unable to load Private Key
140004844304032:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1337:
140004844304032:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:849:
140004844304032:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:769:Field=version, Type=RSA
140004844304032:error:04093004:rsa routines:OLD_RSA_PRIV_DECODE:RSA lib:rsa_ameth.c:115:
140004844304032:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:tasn_dec.c:1337:
140004844304032:error:0D06C03A:asn1 encoding routines:ASN1_D2I_EX_PRIMITIVE:nested asn1 error:tasn_dec.c:849:
140004844304032:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:tasn_dec.c:769:Field=version, Type=PKCS8_PRIV_KEY_INFO

Wie kann ich den privaten Schlüssel und sein Zertifikat erhalten?

23
helado

Anscheinend haben Sie ein Zertifikat im Format DER anstelle von PEM. Dies ist der Grund, warum es richtig funktioniert, wenn Sie das -inform PEM Befehlszeilenargument (das openssl mitteilt, welches Eingabeformat zu erwarten ist).

Es ist wahrscheinlich, dass Ihr privater Schlüssel dieselbe Codierung verwendet. Es sieht so aus, als ob das openssl rsa Befehl akzeptiert auch ein -inform argument, also versuche:

openssl rsa -text -in file.key -inform DER

Eine mit PEM codierte Datei ist eine Klartext-Codierung, die ungefähr so ​​aussieht:

-----BEGIN RSA PRIVATE KEY-----
MIGrAgEAAiEA0tlSKz5Iauj6ud3helAf5GguXeLUeFFTgHrpC3b2O20CAwEAAQIh
ALeEtAIzebCkC+bO+rwNFVORb0bA9xN2n5dyTw/Ba285AhEA9FFDtx4VAxMVB2GU
QfJ/2wIRANzuXKda/nRXIyRw1ArE2FcCECYhGKRXeYgFTl7ch7rTEckCEQDTMShw
8pL7M7DsTM7l3HXRAhAhIMYKQawc+Y7MNE4kQWYe
-----END RSA PRIVATE KEY-----

Während DER ein binäres Codierungsformat ist.

pdate

Manchmal werden Schlüssel im PKCS # 8-Format verteilt (das entweder PEM- oder DER-codiert sein kann). Versuchen Sie dies und sehen Sie, was Sie bekommen:

openssl pkcs8 -in file.key -inform der
11
larsks

Bei der Verwendung von openssl unter Windows trat der Fehler "Expecting: ANY PRIVATE KEY" auf (Ubuntu Bash und Git Bash hatten das gleiche Problem).

Die Ursache des Problems war, dass ich die Schlüssel- und Zertifikatdateien mit UTF8 im Editor gespeichert hatte. Durch erneutes Speichern beider Dateien im ANSI-Format wurde das Problem behoben.

11
Aaron Queenan

Bei meiner Hinrichtung von openssl pkcs12 -export -out cacert.pkcs12 -in testca/cacert.pem, Ich habe folgende Nachricht erhalten:

privater Schlüssel kann nicht geladen werden 140707250050712: Fehler: 0906D06C: PEM-Routinen: PEM_read_bio: Keine Startzeile: pem_lib.c: 701: Erwartet: ANY PRIVATE KEY`

Dies wurde gelöst, indem die Schlüsseldatei zusammen mit dem Befehl bereitgestellt wurde. Der Schalter ist -inkey inkeyfile.pem

2
James Jithin

Meine zwei Cent: Beim Ausführen des Befehls openssl mit dem Zertifikat der Stammzertifizierungsstelle ist in RHEL7.3 dieselbe Fehlermeldung aufgetreten. Der Grund dafür ist, dass beim Herunterladen des Zertifikats vom AD-Server die Codierung als DER anstelle von Base64 ausgewählt wurde. Nachdem die richtige Codierungsversion für den neuen Zertifikatdownload ausgewählt wurde, wurde der Fehler behoben

Hoffe das hilft für neue User :-)

1
Arun Bhosale