6

我正在尝试 使用ruby​​ 1.8.7 (或 1.9.2)OpenSSL::X509::Certificate.new(File.read("testuser.p12")) 从 irb做一个简单的操作,两者的结果相同。我回来的错误是OpenSSL::X509::CertificateError: nested asn1 error

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

4

1 回答 1

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#certificate您可以通过和PKCS12#ca_certs方法提取证书和 CA 证书。

p12 = OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass")
p p12.certificate
p p12.ca_certs
于 2012-01-04T03:59:30.373 回答