J'ai un problème avec la génération d'une clé publique que la PEM_read_bio_RSA_PUBKEY()
fonction openssl peut consommer. Je continue à avoir des erreurs.
Évidemment, je ne peux pas simplement utiliser la chaîne ASCII dans le ssh-keygen <>.pub
fichier de clé car elle est au format de fichier SSH ou peut-être que je SubjectPublicKeyInfo
structure.
Voici le code gen clé: ssh-keygen -t rsa -b 1024 -C "Test Key"
J'ai trouvé un convertisseur php sur le Web qui convertira le contenu de la clé publique en un format de chaîne ASCII PEM base64. Cependant, la fonction ne l'aime toujours pas.
La documentation Openssl indique:
- "Fonction RSA_PUBKEY () qui traite une clé publique à l'aide d'une structure EVP_PKEY"
- «Les fonctions RSA_PUBKEY traitent également une clé publique RSA à l'aide d'une structure RSA»
Comment puis-je obtenir ma clé publique OpenSSH dans un format que la fonction OpenSSL va consommer?
Réponses:
D'ACCORD!
Alors je suis entré dans cette pensée "Facile, j'ai eu ça." Il s'avère qu'il y a beaucoup plus que ce que je pensais.
Le premier problème est donc que (selon les pages de manuel pour OpenSSL (man 3 pem)), OpenSSL s'attend à ce que la clé RSA soit au format PKCS # 1. Clairement, ce n’est pas ce avec quoi ssh-keygen travaille. Vous avez deux options (de rechercher autour de).
Si vous avez OpenSSH v. 5.6 ou version ultérieure (je ne l'ai pas sur mon ordinateur portable), vous pouvez exécuter ceci:
La méthode la plus longue consiste à diviser votre clé SSH en plusieurs composants (l’ entrée de blog dans laquelle je trouve une partie de cette accusation accuse OpenSSH d’être "propriétaire", je préfère l’appeler "unique"), puis utiliser une bibliothèque ASN1. pour échanger des choses.
Heureusement pour vous, quelqu'un a écrit le code pour le faire:
https://gist.github.com/1024558
la source
ssh-keygen
méthode semble fonctionner sous Linux mais pas sous Mac OS X.ssh -V
.OpenSSH_6.2p2
. Travaille dansOpenSSH_6.6p1
.-m
ne fonctionne pas pour moi ... quel est le travail autour?En supposant que vous ayez la clé privée SSH
id_rsa
, vous pouvez en extraire la clé publique de la manière suivante:Je me rends compte que le PO a demandé de convertir une clé publique, cela ne répond donc pas tout à fait à la question, mais j’ai pensé que cela serait utile pour certains de toute façon.
Notez également que cette commande génère un format de clé publique PEM, qui correspond généralement à ce que OpenSSL attend. La réponse de Brian, en revanche, donne un fichier au format RSAPublicKey, qui n’est pas le format normal attendu par OpenSSL (bien que les versions ultérieures puissent apparemment le lire via le
-RSAPublicKey_in
drapeau). Pour convertir, vous pouvez faire ceci:la source
openssl rsa -in id_rsa.pem -pubout -out id_rsa.pub.pem
fonctionne également (c’est-à-dire que l’entrée est une clé privée au format pem). Bonne réponse.-m pkcs8
qui, malgré les gens OpenSSH en utilisant le mauvais nom ne produit X.509 « pubkey ». En outre, depuis OpenSSH 6.5 en 2014-01 si le créateur a spécifié le "nouveau format"-o
pour une meilleure sécurité, cette méthode ne fonctionnera pas et, depuis la version 7.8 de 2018-08, "nouveau format" est désormais la valeur par défaut, idem.Le format que vous voulez est ce qui
ssh-keygen
appellePKCS8
. Donc, la commande suivante produira la sortie désirée:De la
ssh-keygen
page de manuel:la source
Semblable à la méthode d'Amal Chaudhuri ci-dessous, c'est ce qui a fonctionné pour moi. Je devais créer un fichier pem à partir de la clé publique ssh que j'avais générée pour mon client SFTP (Cyberduck).
la source
id_rsa
déjà dans le bon format, vous pouvez le vérifier vous-même, le résultatid_rsa.pem
est 100% identique.Une autre façon de faire cela depuis un autre site. Publier ceci au cas où vous auriez besoin d'une autre méthode. Fonctionne très bien. http://www.chatur.com.np/2011/01/convert-openssh-rsa-key-to-pem-format.html
la source
id_rsa
n'est pas une clé publique. Mauvaise réponse.