Frage

I denken Ich weiß, wie benutzerdefinierte verschlüsselte RSA-Schlüssel zu erstellen, aber wie kann ich lesen ein wie ssh-keygen verschlüsselt das?

Ich weiß, ich kann dies tun:

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

Aber dann OpenSSL fragt mich nach dem Passwort ... Wie kann ich übergeben es an OpenSSL als Parameter?

Und, wie kann ich eine von ssh-keygen erzeugen kompatibel zu denen, erstellen?

ich etwas tun, wie diese private verschlüsselte Schlüssel zu erstellen:

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

Auch erzeugten Schlüssel von OpenSSL :: PKey :: RSA.new (1024) (ohne Verschlüsselung), funktionieren nicht, wenn ich ein Passwort weniger Anmeldungen versuchen (dh ich kopieren Sie den öffentlichen Schlüssel an den Server und verwenden Sie die private anmelden).

Auch wenn ich eine ssh-keygen-Datei über OpenSSL öffnen und dann seinen Inhalt überprüfen, scheint es am Anfang und Ende des Schlüssels zusätzliche Zeichen zu haben. Ist das normal?

Ich weiß nicht wirklich etwas von dieser Sicherheit Sachen verstehen, aber ich versuche zu lernen. Was ist es, dass ich falsch mache?

War es hilfreich?

Lösung 2

Ich habe einige Fortschritte in diesem Bereich gemacht. Wenn ich das Net :: SSH-Bibliothek verwenden, kann ich dies tun:

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

Durch das Lesen des Quellcodes ich noch haben, um herauszufinden, was die Bibliothek tut, um OpenSSL PKey :: RSA.new dies ... zu erreichen und dann wieder ich gehen und testen, und sicher genug, kann OpenSSL den privaten Schlüssel öffnen sehr gut ohne Net :: SSH ... ich habe so viele Tests gemacht, die irgendwie habe ich das nicht richtig vor dem Test.

Aber ich habe immer noch das Problem des ein SSH-kompatible Schlüsselpaar zu schaffen ... und vielleicht werde ich gehe Test wieder und habe die Antwort: P ... nee, ich bin nicht daran interessiert, dass ein Teil

Andere Tipps

Nach der Blog-Post hier:

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

Sie können einfach tun:

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

Viel Glück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top