2013-07-18 10 views
67

Lassen Sie mich zuerst meine Frage erklären. Ich kaufte ein Zertifikat von einer CA und verwendet das folgende Format der csr und den privaten Schlüssel zu generieren:Wie konvertiert man einen privaten Schlüssel in einen privaten RSA-Schlüssel?

openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr 

Wenn ich die server.key Datei zu öffnen, sehe ich, dass es mit „----- beginnt BEGIN PRIVATE KEY ----- "

Ich benutze das SSL-Zertifikat auf meinem Server und alles sieht gut aus.

Jetzt möchte ich das gleiche Zertifikat in AWS IAM hochladen, damit ich es für Beanjest Load Balancer verwenden kann. Ich verwende den folgenden Befehl aus diesem aws doc http://docs.aws.amazon.com/IAM/latest/UserGuide/InstallCert.html#SubmitCSRCertAuth

iam-servercertupload -b public_key_certificate_file -k privatekey.pem -s certificate_object_name 

ich die cert Dateinamen wie erforderlich ändern, aber halten diesen Fehler: „400 MalformedCertificate Ungültige Private Key“

Das Interessante daran ist, auf der aws doc Seite, die Probe privaten Schlüssel, dass sie zeigen, beginnt mit "------- Begin RSA Private Key --------"

Ist gibt es eine Möglichkeit, meinen privaten Schlüssel mit openssl in einen privaten RSA-Schlüssel umzuwandeln?

Antwort

105

Neuere Versionen von OpenSSL sagen BEGIN PRIVATE KEY, weil sie den privaten Schlüssel + eine OID enthalten, die den Schlüsseltyp identifiziert (dies wird als PKCS8-Format bezeichnet). Um die alten Stil Schlüssel zu bekommen (auch bekannt als entweder PKCS1 oder traditionelles OpenSSL-Format) Sie können dies tun:

openssl rsa -in server.key -out server_new.key 

Alternativ, wenn Sie einen PKCS1 Schlüssel und wollen PKCS8:

openssl pkcs8 -topk8 -nocrypt -in privkey.pem 
+0

Perfect !! Lief wie am Schnürchen. Danke vielmals! –

+1

Dies ist auch die Lösung für seltsame Fehlermeldungen wie 'Ungültige PEM-Struktur ', ----- BEGIN ...' fehlt 'von Tools wie Cyberduck, während reines SSH mit dem gleichen Schlüssel funktioniert. – Daniel

+0

Das hat bei mir funktioniert. Windows-Benutzer können OpenSSL hier erhalten: http://slproweb.com/products/Win32OpenSSL.html – ben

14

Dies kann eine Hilfe (wörtlich nicht die Schrägstriche ‚\‘ schreiben, in den Befehlen sollen sie um anzuzeigen, dass „alles, was auf einer Linie sein muss“):

Which Command to Apply When

Es s Es scheint, dass alle Befehle (in Grau) jede Art von Schlüsseldatei (in grün) als "in" Argument nehmen. Was nett ist.

Hier sind die wieder Befehle für eine einfachere Kopie-Einfügen:

openssl rsa            -in $FF -out $TF 
openssl rsa -aes256          -in $FF -out $TF 
openssl pkcs8 -topk8 -nocrypt        -in $FF -out $TF 
openssl pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -in $FF -out $TF 

und

openssl rsa -check -in $FF 
openssl rsa -text -in $FF 
+0

Die "graphml" -Datei des Bildes (die zB mit [yworks yed] (https://www.yworks.com/products/yed) bearbeitet werden kann) [hier ] (https://s3-eu-west-1.amazonaws.com/lohlxadsvl/openssl_commands.graphml) –