2012-01-04 19 views
6

Próbuję zrobić prosty OpenSSL::X509::Certificate.new(File.read("testuser.p12")) z IRB z Ruby 1.8.7 (lub 1.9.2), taki sam wynik dla obu stron. Błąd, który otrzymuję, to: OpenSSL::X509::CertificateError: nested asn1 errorRuby Błąd odczytu w świadectwie Plik z OpenSSL

Czy jest to problem z rubinem, czy też sugeruje to, że sam test jest zniekształcony? Znalazłem podobne raporty obracające się wokół certyfikatu amazon demonstrującego takie błędy, które okazały się samym certyfikatem. Działa jednak w przeglądarce. Sugestie, jak rozwiązać ten problem?

Odpowiedz

10

"wynikser.p.p" wydaje się być plikiem PKCS # 12 zgodnie z postfiksem. Odczytanie formatu PKCS # 12 jako formatu certyfikatu X.509 powoduje błąd dekodowania ASN.1.

Zamiast tego należy wykonać OpenSSL::PKCS12.new(File.read("testuser.p12")). Jeśli plik jest chroniony hasłem (to normalne), należy podać hasło jako drugi parametr PKCS12.new jak OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass")

Można wyodrębnić certyfikat oraz certyfikaty CA przez PKCS12#certificate i PKCS12#ca_certs metod.

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

dziękuję! To wydaje się być problemem. Nie musiałem wiele zajmować się certyfikatami i podążałem za pozornie złym przykładem. Twój post i [this] (http://stackoverflow.com/questions/8167579/connect-to-web-server-via-phonegap-with-ssl-and-certificate) pomógł ogromnie – yodafan86

+0

aktualizacji: to działało właśnie zatrzymał się i nie mogę zrozumieć dlaczego. to dosłownie wybuchło pomiędzy kolejnymi próbami, a teraz nawet w irb, że p12 = linia OpenSSL twierdzi, że potrzebuje 4 parametrów? Czy niektóre zmiany wymagały "net/https"? Jakie inne 2 parametry mogę potrzebować? Każda pomoc bardzo doceniona, ta mnie wprawia w zakłopotanie! – yodafan86

+0

Czy byłeś w stanie go rozwiązać? – shailesh