I думаю Я знаю, как создать пользовательские зашифрованные ключи RSA, но как я могу читать один зашифрованный, как ssh-keygen?Открытие закрытого ключа RSA от Ruby
Я знаю, что могу это сделать:
OpenSSL::PKey::RSA.new(File.read('private_key'))
Но OpenSSL просит у меня ключевую фразу, ... Как я могу передать его в OpenSSL в качестве параметра?
И как я могу создать один совместимый с теми, которые были сгенерированы ssh-keygen?
я сделать что-то вроде этого, чтобы создавать частные зашифрованные ключи:
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
Кроме того, ключи, сгенерированные OpenSSL :: PKey :: RSA.new (1024) (без шифрования), не работают, когда я попробуйте пароли без входа (т. е. я копирую открытый ключ на сервер и использую закрытый для входа в систему).
Также, когда я открываю файл ssh-keygen через OpenSSL, а затем проверяю его содержимое, он, как представляется, содержит дополнительные символы в начале и конце ключа. Это нормально?
Я действительно не понимаю некоторые из этих материалов безопасности, но я пытаюсь учиться. Что я делаю неправильно?