Ошибка чтения Ruby в файле сертификата с OpenSSL - PullRequest
6 голосов
/ 04 января 2012

я пытаюсь сделать простой OpenSSL::X509::Certificate.new(File.read("testuser.p12")) от irb с ruby ​​1.8.7 (или 1.9.2) , то же самое для обоих. Я получаю сообщение об ошибке: OpenSSL::X509::CertificateError: nested asn1 error

Это проблема с рубином или это говорит о том, что сам сертификат поврежден? Я обнаружил, что некоторые подобные отчеты вращаются вокруг сертификата amazon, демонстрируя такие ошибки, которые оказались самим сертификатом. Это работает в браузере, хотя. Предложения о том, как решить эту проблему?

1 Ответ

10 голосов
/ 04 января 2012

«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#certificate и PKCS12#ca_certs.

p12 = OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass")
p p12.certificate
p p12.ca_certs
...