문제

생각한다 사용자 정의 암호화 된 RSA 키를 만드는 방법을 알고 있지만 SSH-Keygen처럼 암호화 된 하나를 어떻게 읽을 수 있습니까?

나는 이것을 할 수 있다는 것을 안다 :

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) (암호화없이)에 의해 생성 된 키, 비밀번호없는 로그인을 시도 할 때 작동하지 않습니다 (즉, 공개 키를 서버에 복사하고 개인 원을 사용하여 개인을 사용합니다. 로그인).

또한 OpenSSL을 통해 ssh-keygen 파일을 열고 내용을 확인하면 키의 시작과 끝에 추가 문자가있는 것으로 보입니다. 이것은 정상입니까?

나는이 보안 내용 중 일부를 실제로 이해하지 못하지만 배우려고 노력하고 있습니다. 내가 잘못하고있는 것은 무엇입니까?

도움이 되었습니까?

해결책 2

나는 이것에 대해 약간의 진전을 이루었다. Net :: SSH 라이브러리를 사용하면 다음을 수행 할 수 있습니다.

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

소스 코드를 읽음으로써 라이브러리가 OpenSSL의 pkey :: rsa.new를 달성하기 위해 무엇을하는지 아직 알아 내지 못했습니다. net :: ssh ... 너무 많은 테스트를 했어, 어떻게 든 전에 이것을 올바르게 테스트하지 않았다.

하지만 여전히 SSH 호환 키 쌍을 만드는 데 문제가 있습니다 ... 그리고 아마도 다시 테스트하고 답을 가질 것입니다.

다른 팁

여기에 블로그 게시물에 따르면 :

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

당신은 단순히 할 수 있습니다 :

OpenSsl :: pkey :: rsa.new (file.read ( 'private_key'), 'passphrase')

행운을 빌어 요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top