Ich möchte den öffentlichen und privaten Schlüssel aus meiner PKCS#12
Datei extrahieren, um ihn später für die SSH-Authentifizierung mit öffentlichem Schlüssel zu verwenden.
Im Moment generiere ich Schlüssel über ssh-keygen, die ich .ssh/authorized_key
irgendwo auf der Clientseite eingebe.
In Zukunft möchte ich die Schlüssel aus einem PKCS#12
Container verwenden, daher muss ich zuerst den öffentlichen Schlüssel extrahieren PKCS#12
und dann in die .ssh/authorized_keys
Datei einfügen. Gibt es eine Chance, dies zum Laufen zu bringen openssl
? Sind die Schlüssel PKCS#12
für die Authentifizierung mit ssh-public-key kompatibel?
openssl rsa -in privateKey.pem -out private.pem
-passout pass:
. Es wird erwartet, dass der Parameter im Formular pass: mypassword vorliegt. stackoverflow.com/a/27497899/206277-nodes
Exporten der Schlüssel richtigDies ist mit ein wenig Formatkonvertierung möglich.
Um den privaten Schlüssel in einem Format zu extrahieren, kann openssh Folgendes verwenden:
So konvertieren Sie den privaten Schlüssel in einen öffentlichen Schlüssel:
Um den öffentlichen Schlüssel in einem Format zu extrahieren, kann openssh Folgendes verwenden:
quelle
OpenSSH kann keine PKCS # 12-Dateien sofort verwenden. Wie andere vorgeschlagen haben, müssen Sie den privaten Schlüssel im PEM-Format extrahieren, der Sie aus dem Land von OpenSSL nach OpenSSH bringt. Andere hier erwähnte Lösungen funktionieren bei mir nicht. Ich verwende OS X 10.9 Mavericks (derzeit 10.9.3) mit vorgefertigten Dienstprogrammen (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Extrahieren Sie zunächst einen privaten Schlüssel im PEM-Format, der direkt von OpenSSH verwendet wird:
Ich empfehle dringend, den privaten Schlüssel mit einem Passwort zu verschlüsseln:
Natürlich ist das Schreiben eines Klartextkennworts in der Befehlszeile auch nicht sicher. Sie sollten daher den letzten Befehl aus dem Verlauf löschen oder nur sicherstellen, dass er nicht dort ankommt. Unterschiedliche Muscheln haben unterschiedliche Möglichkeiten. Sie können Ihrem Befehl Leerzeichen voranstellen, um zu verhindern, dass er in Bash und vielen anderen Shells im Verlauf gespeichert wird. So löschen Sie den Befehl auch aus dem Verlauf in Bash:
Alternativ können Sie OpenSSL auf andere Weise ein Kennwort für einen privaten Schlüssel übergeben. Informationen zu Passphrasenargumenten finden Sie in der OpenSSL-Dokumentation .
Erstellen Sie dann einen öffentlichen OpenSSH-Schlüssel, der der Datei "authorized_keys" hinzugefügt werden kann:
quelle
| openssl rsa
Zeug?~/.ssh/id_rsa
) mit einigen "Cruft" wie "Bag Attributes" ohne "|" erstellt openssl rsa`. Ich denke, OpenSSH und andere Dienstprogramme, die Identitätsdateien verwenden, können mit dieser Cruft umgehen (ich habe es nicht versucht), aber ich werde einfach verwendet, um nur die erforderlichen Daten und nichts weiter bereitzustellen, insbesondere wenn es um Sicherheit geht.openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts
Lösung 1:
Extrahieren Sie P12 aus jks
Extrahieren Sie PEM aus P12 und bearbeiten Sie die Datei und pem aus der CRT-Datei
Schlüssel aus jks extrahieren
Lösung 2:
Extrahieren Sie PEM und encryptedPrivateKey in die txt-Datei```
PrivateKey entschlüsseln
quelle
echo hello
.Update: Ich habe festgestellt, dass meine Antwort nur ein schlechtes Duplikat einer gut erklärten Frage von BryKKan auf https: //unix.stackexchange.com / ... war
Hier ist ein Auszug daraus:
quelle
Soweit ich weiß, ist PKCS # 12 nur ein Zertifikat- / öffentlicher / privater Schlüsselspeicher. Wenn Sie einen öffentlichen Schlüssel aus der PKCS # 12-Datei extrahiert haben, sollte OpenSSH ihn verwenden können, solange er im PEM- Format extrahiert wurde . Sie wissen wahrscheinlich bereits, dass Sie auch einen entsprechenden privaten Schlüssel (auch in PEM ) benötigen , um ihn für die Authentifizierung mit ssh-public-key zu verwenden.
quelle
Die akzeptierte Antwort ist der richtige Befehl. Ich möchte nur eine weitere Sache hinzufügen. Wenn Sie beim Extrahieren des Schlüssels das PEM-Passwort (
"Enter PEM pass phrase:"
) leer lassen, wird nicht der vollständige Schlüssel extrahiert, sondern nur derlocalKeyID
. Um den vollständigen Schlüssel zu erhalten, müssen Sie ein PEM-Kennwort angeben, das den folgenden Befehl ausführt.Bitte beachten Sie, dass Sie beim Importieren des Passworts das tatsächliche Passwort für angeben
"Enter Import Password:"
oder dieses Passwort leer lassen können:quelle