使用OpenSSL在证书文件中读取Ruby错误

时间:2012-01-04 01:29:36

标签: ruby-on-rails ruby openssl certificate pem

我想做一个简单的事情 OpenSSL::X509::Certificate.new(File.read("testuser.p12")) 来自irb的红宝石1.8.7(或1.9.2),两者的结果相同。我收到的错误是OpenSSL::X509::CertificateError: nested asn1 error

这是一个红宝石问题,还是这表明证书本身格式不正确?我发现一些类似的报告围绕亚马逊证书展示了这些错误,结果证明是证书本身。它虽然在浏览器中工作。关于如何解决这个问题的建议?

1 个答案:

答案 0 :(得分:10)

根据后缀,

“testuser.p12”似乎是PKCS#12文件。将PKCS#12格式读取为X.509证书格式会导致ASN.1解码错误。

您应该改为OpenSSL::PKCS12.new(File.read("testuser.p12"))。如果文件受密码保护(这是正常的),请将密码作为PKCS12.new的第二个参数,如OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass")

您可以按PKCS12#certificatePKCS12#ca_certs方法提取证书和CA证书。

p12 = OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass")
p p12.certificate
p p12.ca_certs