Je souhaite extraire la clé publique et privée de mon PKCS#12
fichier pour une utilisation ultérieure dans SSH-Public-Key-Authentication.
En ce moment, je génère des clés via ssh-keygen que je mets .ssh/authorized_key
, respectives quelque part du côté client.
À l'avenir, je veux utiliser les clés d'un PKCS#12
conteneur, donc je dois d'abord extraire la clé publique PKCS#12
, puis les mettre dans le .ssh/authorized_keys
fichier. Y a-t-il une chance de faire fonctionner cela via openssl
? Les clés sont-elles PKCS#12
compatibles pour l'authentification ssh-public-key?
openssl rsa -in privateKey.pem -out private.pem
-passout pass:
. Il s'attend à ce que le paramètre soit sous la forme pass: mypassword. stackoverflow.com/a/27497899/206277-nodes
exporte la clé correctementC'est possible avec un peu de conversion de format.
Pour extraire la clé privée dans un format openssh peut utiliser:
Pour convertir la clé privée en clé publique:
Pour extraire la clé publique dans un format openssh peut utiliser:
la source
OpenSSH ne peut pas utiliser les fichiers PKCS # 12 prêts à l'emploi. Comme d'autres l'ont suggéré, vous devez extraire la clé privée au format PEM qui vous fait passer du pays d'OpenSSL à OpenSSH. Les autres solutions mentionnées ici ne fonctionnent pas pour moi. J'utilise OS X 10.9 Mavericks (10.9.3 pour le moment) avec des utilitaires «préemballés» (OpenSSL 0.9.8y, OpenSSH 6.2p2).
Tout d'abord, extrayez une clé privée au format PEM qui sera utilisée directement par OpenSSH:
Je suggère fortement de crypter la clé privée avec un mot de passe:
De toute évidence, l'écriture d'un mot de passe en texte brut sur la ligne de commande n'est pas non plus sûre, vous devez donc supprimer la dernière commande de l'historique ou simplement vous assurer qu'elle n'y arrive pas. Différents obus ont des manières différentes. Vous pouvez préfixer votre commande avec de l'espace pour l'empêcher d'être enregistrée dans l'historique dans Bash et de nombreux autres shells. Voici également comment supprimer la commande de l'historique dans Bash:
Alternativement, vous pouvez utiliser une manière différente de passer un mot de passe de clé privée à OpenSSL - consultez la documentation OpenSSL pour les arguments de phrase de passe .
Ensuite, créez une clé publique OpenSSH qui peut être ajoutée au fichier authorized_keys:
la source
| openssl rsa
ça sert?~/.ssh/id_rsa
) avec des «attributs» comme les attributs de sac sans «| openssl rsa`. Je suppose que OpenSSH et d'autres utilitaires qui utilisent un fichier d'identité peuvent gérer cette cruauté (je n'ai pas essayé), mais je suis simplement utilisé pour fournir uniquement les données nécessaires et rien de plus, surtout si c'est quelque chose autour de la sécurité.openssl pkcs12 -in filename.p12 -clcerts -nodes -nocerts
Solution 1:
Extraire P12 de jks
Extraire le PEM du P12 et éditer le fichier et le pem du fichier crt
Extraire la clé de jks
Solution 2:
Extraire PEM et encryptedPrivateKey en fichier txt ''
Déchiffrer privateKey
la source
echo hello
.Mise à jour: j'ai remarqué que ma réponse n'était qu'un mauvais double d'une question bien expliquée sur https: //unix.stackexchange.com / ... par BryKKan
En voici un extrait:
la source
Pour autant que je sache, PKCS # 12 n'est qu'un magasin de certificats / clés publiques / privées. Si vous avez extrait une clé publique du fichier PKCS # 12, OpenSSH devrait pouvoir l'utiliser tant qu'elle a été extraite au format PEM . Vous savez probablement déjà que vous avez également besoin d'une clé privée correspondante (également dans PEM ) afin de l'utiliser pour l'authentification ssh-public-key.
la source
La réponse acceptée est la commande correcte, je veux juste ajouter une chose supplémentaire, lors de l'extraction de la clé si vous laissez le mot de passe PEM (
"Enter PEM pass phrase:"
) vide, la clé complète ne sera pas extraite mais uniquement lalocalKeyID
sera extraite. Pour obtenir la clé complète, vous devez spécifier un mot de passe PEM lors de l'exécution de la commande suivante.Veuillez noter qu'en matière d'importation de mot de passe, vous pouvez spécifier le mot de passe réel
"Enter Import Password:"
ou laisser ce mot de passe vierge:la source