3
我創建了一個RSA私鑰紅寶石:OpenSSL的紅寶石:PKCS#8格式的私鑰
require 'openssl'
key = OpenSSL::PKey::RSA.generate(1024)
我可以在PEM或DER格式的關鍵是:
key.to_pem
key.to_der
但似乎沒有辦法將其轉換爲PKCS#8格式。我想出的最好的辦法是在另一個進程中呼叫openssl:
require 'open3'
Open3.popen3('openssl pkcs8 -topk8 -inform PEM -outform PEM -passout pass:password') do |stdin, stdout, stderr|
stdin.write(key.to_pem)
unless (err = stderr.read).empty? then raise err end
stdout.read
end
必須有更好的方法,我找不到。 Ruby中的OpenSSL類庫是否有這樣的機制?
好吧,你有代碼躺在某處嗎? 編輯:顯然https://github.com/twg/openssl_pkcs8 – 2013-03-01 16:42:30
是的,就是這樣。爲了您的方便,還打包到[gem](https://rubygems.org/gems/openssl_pkcs8)。不過,我在使用Ruby 2.0時遇到了一些麻煩。 – tadman 2013-03-01 18:53:15
@tadman我更新了Ruby 2.2.1的代碼,它的功能就像一個魅力。你的寶石上有一個拉動請求:https://github.com/twg/openssl_pkcs8/pull/4 – 2015-09-04 18:17:08