2012-01-04 23 views
6

tôi đang cố gắng để làm một đơn giản OpenSSL::X509::Certificate.new(File.read("testuser.p12")) từ IRB với ruby ​​1.8.7 (hoặc 1.9.2), cùng kết quả cho cả hai. Lỗi tôi nhận được là OpenSSL::X509::CertificateError: nested asn1 errorcủa Ruby Lỗi đọc trong Giấy chứng nhận tập tin với OpenSSL

Đây có phải là vấn đề về ruby ​​hay điều này cho thấy bản thân chứng chỉ không đúng định dạng? Tôi đã tìm thấy một số báo cáo tương tự xoay quanh một amazon cert chứng minh các lỗi như vậy, mà hóa ra là cert chính nó. Nó hoạt động trong trình duyệt mặc dù. Gợi ý về cách giải quyết vấn đề này?

Trả lời

10

"testuser.p12" có vẻ là tệp PKCS # 12 theo hậu tố. Đọc định dạng PKCS # 12 dưới dạng định dạng chứng chỉ X.509 gây ra lỗi giải mã ASN.1.

Thay vào đó, bạn nên làm OpenSSL::PKCS12.new(File.read("testuser.p12")). Nếu tệp được bảo vệ bằng cụm mật khẩu (bình thường), hãy cung cấp cụm mật khẩu làm tham số thứ hai cho PKCS12.new như OpenSSL::PKCS12.new(File.read("testuser.p12"), "pass")

Bạn có thể trích xuất chứng chỉ và chứng chỉ CA theo phương thức PKCS12#certificatePKCS12#ca_certs.

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

cảm ơn! Điều đó dường như là vấn đề. Tôi đã không phải đối phó với certs nhiều và tôi đã theo một ví dụ rõ ràng xấu. Bài đăng của bạn và [this this] (http://stackoverflow.com/questions/8167579/connect-to-web-server-via-phonegap-with-ssl-and-certificate) đã giúp rất nhiều cập nhật – yodafan86

+0

: nó đã hoạt động dừng lại và tôi không thể hiểu tại sao. nó có nghĩa là thổi bay giữa các lần chạy thử, và bây giờ ngay cả trong irb, rằng p12 = dòng OpenSSL tuyên bố nó cần 4 tham số? Đã làm một số thay đổi phụ thuộc trong yêu cầu 'net/https'? Tôi có thể cần 2 thông số nào khác? Bất kỳ giúp đỡ rất nhiều đánh giá cao, điều này đã cho tôi bối rối! – yodafan86

+0

bạn có thể giải quyết nó? – shailesh

Các vấn đề liên quan