Ich habe ein Zertifikat im der
Format, aus dem ich mit diesem Befehl einen öffentlichen Schlüssel generiere:
openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
Was dazu führt:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
Wie kann ich einen solchen öffentlichen Schlüssel erhalten? Entweder vom Zertifikat oder von diesem öffentlichen Schlüssel?
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Dies wurde mit diesem Befehl erhalten:
ssh-keygen -y -f private_key1.pem > public_key1.pub
ssh-keygen -y -f private_key1.pem > public_key1.pub
für mich hervorragend funktioniert.ssh-keygen -i -m PKCS8 -f public-key.pem
-m
ist für-i
/ unterschiedlich-e
. Also meine Freunde, bitte stellen Sie sicher, dass Sie wissen, was Sie wollen und was Sie haben . :-)Antworten:
Keine Notwendigkeit, Sachen zu kompilieren. Sie können dasselbe tun mit
ssh-keygen
:liest den öffentlichen Schlüssel im openssl-Format aus
pub1key.pub
und gibt ihn im OpenSSH-Format aus.Hinweis : In einigen Fällen müssen Sie das Eingabeformat angeben:
Aus den ssh-keygen-Dokumenten (From man ssh-keygen):
quelle
-m PKCS8
notwendig$ ssh-keygen -f mykey.pub -i
key_from_blob: invalid format
decode blob failed.
Keine Notwendigkeit für Skripte oder andere "Tricks":
openssl
undssh-keygen
sind genug. Ich gehe von keinem Passwort für die Schlüssel aus (was schlecht ist).Generieren Sie ein RSA-Paar
Alle folgenden Methoden geben ein RSA-Schlüsselpaar im gleichen Format an
Mit openssl ( man genrsa )
In OpenSSL v1.0.1
genrsa
wird ersetzt durchgenpkey
so ist dies der neue Weg , um es (zu tun , Mann genpkey ):Mit ssh-keygen
DER in PEM konvertieren
Wenn Sie ein RSA-Schlüsselpaar im DER-Format haben, möchten Sie es möglicherweise in PEM konvertieren, um die folgende Formatkonvertierung zu ermöglichen:
Generation:
Umwandlung:
Extrahieren Sie den öffentlichen Schlüssel aus dem PEM-formatierten RSA-Paar
im PEM-Format:
im OpenSSH v2-Format siehe :
Anmerkungen
Betriebssystem- und Softwareversion:
Verweise:
quelle
ssh-rsa
Format? Gute Referenz übrigens.ssh-keygen -y -f dummy-xxx.pem
wird einessh-rsa AAAA[...]==
Anpassung für dieauthorized_keys
Datei von ssh erstellt.Um meine eigene Frage zu beantworten, habe ich nach dem Posten auf der openssl Mailingliste Folgendes erhalten:
Hier ist C-Code zum Konvertieren von einem öffentlichen OpenSSL-Schlüssel in einen öffentlichen OpenSSH-Schlüssel. Sie können den Code über diesen Link abrufen und selbst kompilieren:
quelle
quelle
do_convert_from_pkcs8: TEST.pem is not a recognised public key format
openssl genrsa -out newkey.pem 2048
undopenssl rsa -in newkey.pem -outform PEM -pubout -out newkeypublic.pem
quelle
Ich habe mit gemacht
Kredit geht hier
quelle
Das folgende Skript würde das öffentliche Schlüsselzertifikat ci.jenkins-ci.org im base64-codierten DER-Format erhalten und es in eine öffentliche OpenSSH-Schlüsseldatei konvertieren. Dieser Code setzt voraus, dass ein 2048-Bit-RSA-Schlüssel verwendet wird, und zieht viel aus der Antwort von Ian Boyd . Ich habe in Kommentaren zu diesem Artikel im Jenkins-Wiki etwas mehr erklärt, wie es funktioniert .
quelle
FWIW, dieses BASH-Skript verwendet ein X.509-Zertifikat im PEM- oder DER-Format oder eine öffentliche OpenSSL-Schlüsseldatei (auch PEM-Format) als erstes Argument und entfernt einen öffentlichen OpenSSH-RSA-Schlüssel. Dies erweitert die obige Antwort von @ mkalkov. Die Anforderungen sind
cat
,grep
,tr
,dd
,xxd
,sed
,xargs
,file
,uuidgen
,base64
,openssl
(1.0+) und natürlichbash
. Alle außeropenssl
(enthältbase64
) sind so gut wie garantiert Teil der Basisinstallation auf jedem modernen Linux-System, außer vielleichtxxd
(was Fedora imvim-common
Paket zeigt ). Wenn jemand es aufräumen und schöner machen möchte, Vorbehalt Lektor.quelle