我想做一个简单的事情
OpenSSL::X509::Certificate.new(File.read("testuser.p12"))
来自irb的红宝石1.8.7(或1.9.2),两者的结果相同。我收到的错误是OpenSSL::X509::CertificateError: nested asn1 error
这是一个红宝石问题,还是这表明证书本身格式不正确?我发现一些类似的报告围绕亚马逊证书展示了这些错误,结果证明是证书本身。它虽然在浏览器中工作。关于如何解决这个问题的建议?
答案 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#certificate
和PKCS12#ca_certs
方法提取证书和CA证书。
p12 = OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass")
p p12.certificate
p p12.ca_certs