Question

Je pense que je sais comment créer des clés RSA chiffrées personnalisées, mais comment puis-je en lire une comme ssh-keygen le fait?

Je sais que je peux le faire:

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

Ensuite, OpenSSL me demande la phrase secrète ... Comment puis-je la transmettre à OpenSSL en tant que paramètre?

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

Je fais quelque chose comme ça 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

De plus, les clés générées par OpenSSL :: PKey :: RSA.new (1024) (sans chiffrement) ne fonctionnent pas lorsque j'essaie des connexions sans mot de passe (c'est-à-dire que je copie la clé publique sur le serveur et utilise le privé pour vous connecter).

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

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

Était-ce utile?

La solution 2

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

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

En lisant le code source, je n'ai pas encore compris ce que la bibliothèque fait à PKey :: RSA.new d'OpenSSL pour accomplir cela ... Et puis, je vais tester à nouveau, et bien sûr, OpenSSL peut ouvrir la clé privée très bien sans Net :: SSH ... J'ai fait tellement de tests que je ne l'avais pas testé correctement auparavant.

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

Autres conseils

Selon le blog publié ici:

http : //stuff-things.net/2008/02/05/encrypting-lots-of-sensitive-data-with-ruby-on-rails/

Vous pouvez simplement faire:

OpenSSL :: PKey :: RSA.new (File.read ('private_key'), 'phrase secrète')

Bonne chance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top