将DER键(带密码短语)转换为带有ruby的PEM

时间:2017-11-03 19:40:40

标签: ruby-on-rails openssl pem backticks der

我使用此openssl命令将密钥文件转换为pem:

openssl pkcs8 -inform DER -in LAN7008173R5.key -passin pass:12345678a -out converted_key.pem

当我使用cat converted_key.pem时,我得到了这个(预期结果):

-----开始私钥----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCC + 8KIIUMVVphf ... kEGx50X8z7yLGNYY34YDPIU = ----- END PRIVATE KEY -----

我尝试使用反引号运行此命令将私钥值保存到字符串中,然后将其保存到文件中:

file = File.read(Rails.root.join('lib', 'cer', '2', 'LAN7008173R5.key'))

pem_key = openssl pkcs8 -inform DER -in #{file} -passin pass:12345678a

但是我得到了这个错误(即使是相同的文件和路由): ArgumentError:string包含空字节

当我这样做时:

OpenSSL::PKey::RSA.new(File.read(Rails.root.join('lib', 'cer', '2', 'LAN7008173R5.key')), '12345678a')

我明白了: OpenSSL :: PKey :: RSAError:既不是PUB密钥也不是PRIV密钥:嵌套asn1错误

我也试过这个:

file = File.read(Rails.root.join('lib', 'cer', '2', 'LAN7008173R5.key'))

key = OpenSSL::PKey.read(file, '12345678a')

得到了这个: ArgumentError:无法解析PKey:无起始行

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我找到了它(不需要'阅读')

file = Rails.root.join('lib', 'cer', '2', 'LAN7008173R5.key')

pem_key = openssl pkcs8 -inform DER -in #{file} -passin pass:12345678a

得到了我预期的结果:

" ----- BEGIN PRIVATE KEY ----- \ nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCC + 8KIIUMVVphf \ nvF1VGG ... L80yqP3p6nXBohs45XsbF1 \ nkEGx50X8z7yLGNYY34YDPIU = \ n ----- END私钥----- \ n"