2008-10-25 20 views
5

I düşünüyorum Özel şifrelenmiş RSA anahtarlarını nasıl oluşturacağımı biliyorum, ancak ssh-keygen gibi şifrelenmiş bir dosyayı nasıl okuyabilirim?Ruby'den bir özel RSA anahtarı açma

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

Ama sonra OpenSSL ben bir parametre olarak OpenSSL için iletebilirsiniz nasıl ... parola için bana sorar:

Bunu yapabileceğini biliyorum?

Ayrıca, ssh-keygen tarafından oluşturulanlara nasıl uyumlu bir tane oluşturabilirim?

Ben özel şifreli anahtarlar oluşturmak için böyle bir şey yapmak: OpenSSL tarafından oluşturulan

Ayrıca
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 

, anahtarları :: PKey :: RSA.new (1024) (şifreleme olmadan), ne zaman çalışmaz ben Parolasız girişleri (yani, ortak anahtarı sunucuya kopyalarım ve oturum açmak için özel olanı kullanıyorum) deneyin. Ayrıca, bir ssh-keygen dosyasını OpenSSL aracılığıyla açıp içeriklerini kontrol ettiğimde, anahtarın başına ve sonunda ek karakterlere sahip olduğu görülüyor. Bu normal mi?

Bu güvenlik öğelerinden bazılarını anlamıyorum, ancak öğrenmeye çalışıyorum. Yanlış olan şey nedir?

cevap

-3

Bu konuda biraz ilerleme kaydettim. Ben Net :: SSH kütüphanesi kullanırsam, bunu yapabilirsiniz:

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

Ben kütüphane OpenSSL pkey ne yaptığını anlamaya henüz kaynak kodunu okuyarak :: RSA.new Bunu gerçekleştirmek için .. Ve sonra tekrar test edip tekrar test edeceğim ve OpenSSL, Net :: SSH olmadan özel anahtarı açabileceğinden eminim ... Bir şekilde daha önce test etmemiş olduğum çok fazla test yaptım.

Ama yine de bir SSH uyumlu anahtar çifti oluşturma sorunu var ... ve belki ben tekrar testini gidip cevap olacak: nah, ben bu bölümünde o ilgilenmiyorum ... P

burada blog yayınına göre
İlgili konular