2008-10-25 6 views
5

I pense Je sais comment créer des clés RSA cryptées personnalisées, mais comment puis-je en lire une cryptée comme le fait ssh-keygen?Ouverture d'une clé privée RSA à partir de Ruby

Je sais que je peux le faire:

OpenSSL::PKey::RSA.new(File.read('private_key')) 

Mais OpenSSL me demande le mot de passe ... Comment puis-je passer à OpenSSL en tant que paramètre?

Et, comment puis-je créer un compatible avec ceux générés par ssh-keygen?

je fais quelque chose comme ceci pour créer des clés privées cryptées:

pass = '123456' 
key = OpenSSL::PKey::RSA.new(1024) 
key = "0000000000000000#{key.to_der}" 
c = OpenSSL::Cipher::Cipher.new('aes-256-cbc') 
c.encrypt 
c.key = Digest::SHA1.hexdigest(pass).unpack('a2' * 32).map {|x| x.hex}.pack('c' * 32) 
c.iv = iv 
encrypted_key = c.update(key) 
encrypted_key << c.final 

En outre, les clés générées par OpenSSL :: PKey :: RSA.new (1024) (sans cryptage), ne fonctionne pas lorsque je essayez les connexions sans mot de passe (par exemple, je copie la clé publique sur le serveur et utilise la clé privée pour me connecter).

De même, lorsque j'ouvre un fichier ssh-keygen via OpenSSL et vérifie ensuite son contenu, il semble qu'il comporte des caractères supplémentaires au début et à la fin de la clé. Est-ce normal?

Je ne comprends pas vraiment certaines de ces choses de sécurité, mais j'essaie d'apprendre. Qu'est-ce que je fais de mal?

Répondre

-3

J'ai fait quelques progrès à ce sujet. Si j'utilise le Net :: bibliothèque SSH, je peux le faire:

Net::SSH::KeyFactory.load_private_key 'keyfile', 'passphrase' 

En lisant le code source, je n'ai pas encore comprendre ce que la bibliothèque fait au PKey de OpenSSL :: RSA.new pour y parvenir .. OpenSSL peut ouvrir la clé privée très bien sans Net :: SSH ... J'ai fait tellement de tests que je n'ai pas testé ça correctement auparavant.

Mais j'ai encore le problème de créer une paire de clés compatibles SSH ... et peut-être que je vais tester à nouveau et avoir la réponse: P ... nah, je ne suis pas intéressé par cette partie

Questions connexes