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

我试图从irb与ruby 1.8.7(或1.9.2)做一个简单的OpenSSL::X509::Certificate.new(File.read("testuser.p12")) ,两者的结果相同。 我得到的错误是OpenSSL::X509::CertificateError: nested asn1 error

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

根据后缀,“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