我使用以下代码在Ruby中创建了一个RSA私钥:
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类库中是否有执行此操作的机制?