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

yod*_*n86 6 ruby openssl ruby-on-rails certificate pem

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

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

NaH*_*aHi 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")

您可以通过提取证书和CA证书PKCS12#certificatePKCS12#ca_certs方法.

p12 = OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass")
p p12.certificate
p p12.ca_certs
Run Code Online (Sandbox Code Playgroud)