我正在尝试做一个简单的OpenSSL::X509::Certificate.new(File.read("testuser.p12"))来自irb的 ruby 1.8.7(或1.9.2),两者的结果相同。我回来的错误是OpenSSL::X509::CertificateError: nested asn1 error
这是 ruby 问题,还是表明证书本身格式错误?我发现一些类似的报告围绕着证明这种错误的亚马逊证书而来,事实证明这是该证书本身。它可以在浏览器中运行。有关如何解决此问题的建议?

最佳答案

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

关于ruby-on-rails - 使用OpenSSL读取证书文件中的Ruby错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8720981/

10-11 08:14