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?