J'ai un certificat au der
format, à partir de celui-ci avec cette commande, je génère une clé publique:
openssl x509 -inform der -in ejbcacert.cer -noout -pubkey > pub1key.pub
Ce qui se traduit par ceci:
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7vbqajDw4o6gJy8UtmIbkcpnk
O3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2
eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1
QWPdspTBKcxeFbccDwIDAQAB
-----END PUBLIC KEY-----
Comment puis-je obtenir une clé publique comme celle-ci? Soit à partir du certificat, soit à partir de cette clé publique?
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC7vbqajDw4o6gJy8UtmIbkcpnkO3Kwc4qsEnSZp/TR+fQi62F79RHWmwKOtFmwteURgLbj7D/WGuNLGOfa/2vse3G2eHnHl5CB8ruRX9fBl/KgwCVr2JaEuUm66bBQeP5XeBotdR4cvX38uPYivCDdPjJ1QWPdspTBKcxeFbccDw==
Ceci a été obtenu avec cette commande:
ssh-keygen -y -f private_key1.pem > public_key1.pub
ssh-keygen -y -f private_key1.pem > public_key1.pub
a très bien fonctionné pour moi.ssh-keygen -i -m PKCS8 -f public-key.pem
-m
est également différente pour-i
/-e
. Alors mes amis, assurez-vous de savoir ce que vous voulez et ce que vous avez . :-)Réponses:
Pas besoin de compiler des trucs. Vous pouvez faire de même avec
ssh-keygen
:lira la clé publique au format openssl
pub1key.pub
et la sortira au format OpenSSH.Remarque : dans certains cas, vous devrez spécifier le format d'entrée:
À partir de la documentation ssh-keygen (De man ssh-keygen):
la source
-m PKCS8
c'était nécessaire$ ssh-keygen -f mykey.pub -i
key_from_blob: invalid format
decode blob failed.
Pas besoin de scripts ou d'autres «astuces»:
openssl
etssh-keygen
suffisent. Je suppose qu'aucun mot de passe pour les clés (ce qui est mauvais).Générer une paire RSA
Toutes les méthodes suivantes donnent une paire de clés RSA dans le même format
Avec openssl ( man genrsa )
Dans OpenSSL v1.0.1
genrsa
est remplacé pargenpkey
donc c'est la nouvelle façon de le faire ( man genpkey ):Avec ssh-keygen
Conversion de DER en PEM
Si vous disposez d'une paire de clés RSA au format DER, vous souhaiterez peut-être la convertir en PEM pour permettre la conversion de format ci-dessous:
Génération:
Conversion:
Extraire la clé publique de la paire RSA formatée PEM
au format PEM:
au format OpenSSH v2 voir :
Remarques
Version du système d'exploitation et du logiciel:
Références:
la source
ssh-rsa
format? Bonne référence, btw.ssh-keygen -y -f dummy-xxx.pem
produit unssh-rsa AAAA[...]==
ajustement pour leauthorized_keys
fichier de ssh .Pour répondre à ma propre question, après avoir posté sur la liste de diffusion openssl, j'ai obtenu ceci:
Voici le code C pour convertir une clé publique OpenSSL en une clé publique OpenSSH. Vous pouvez récupérer le code à partir de ce lien et le compiler vous-même:
la source
la source
do_convert_from_pkcs8: TEST.pem is not a recognised public key format
openssl genrsa -out newkey.pem 2048
etopenssl rsa -in newkey.pem -outform PEM -pubout -out newkeypublic.pem
la source
J'ai fait avec
Le crédit va ici
la source
Le script suivant obtiendrait le certificat de clé publique ci.jenkins-ci.org au format DER encodé en base64 et le convertirait en fichier de clé publique OpenSSH. Ce code suppose qu'une clé RSA de 2048 bits est utilisée et s'inspire beaucoup de la réponse de Ian Boyd . J'ai expliqué un peu plus comment cela fonctionne dans les commentaires de cet article sur le wiki Jenkins.
la source
FWIW, ce script BASH prendra un certificat X.509 au format PEM ou DER ou un fichier de clé publique OpenSSL (également au format PEM) comme premier argument et annulera une clé publique OpenSSH RSA. Cela étend la réponse de @ mkalkov ci-dessus. Les exigences sont
cat
,grep
,tr
,dd
,xxd
,sed
,xargs
,file
,uuidgen
,base64
,openssl
(1.0+), et bien sûrbash
. Tous saufopenssl
(contientbase64
) sont à peu près garantis pour faire partie de l'installation de base sur n'importe quel système Linux moderne, sauf peut-êtrexxd
(ce que Fedora montre dans levim-common
paquet). Si quelqu'un veut le nettoyer et le rendre plus agréable, avertissez le lecteur.la source