6

Tôi đang làm việc với chứng chỉ X509 trong Java. Với chứng chỉ, bạn có thể tìm thấy tất cả các chứng chỉ khác trong hệ thống phân cấp ký cho đến khi bạn đạt được chứng chỉ gốc?Lấy chuỗi chứng chỉ

Tôi có một tệp chứng chỉ (có phần mở rộng là .cer) và tôi muốn trích xuất chứng chỉ ký tên gốc. Tôi muốn tiếp tục tìm phụ huynh của chứng chỉ đó cho đến khi tôi nhận được chứng chỉ gốc cuối cùng, đó là tự ký.

Tôi đã kiểm tra API chứng chỉ X509Certificate và các API có liên quan trong java.security.cert nhưng không thể tìm thấy bất kỳ điều gì hữu ích.

+1

bản sao có thể có của [Cách tạo chứng chỉ trung gian và gốc từ chứng chỉ lá hiện có?] (Http://stackoverflow.com/questions/11076491/how-to-generate-intermediate-and-root-cert-from- giấy chứng nhận có sẵn một lá) –

+1

Không có cách nào đáng tin cậy để thực hiện việc này. Xem câu trả lời của tôi trên http://stackoverflow.com/a/11076955/47961 –

+1

Bạn đã thử [java.security.KeyStore # getCertificateChain()] (http://docs.oracle.com/javase/6/docs/api /java/security/KeyStore.html#getCertificateChain(java.lang.String))? – Zaki

Trả lời

2

Đó không phải là khó - giả sử bạn đã bằng cách nào đó/ra khỏi ban nhạc có tất cả các chứng chỉ trung gian và chứng chỉ gốc trong một hoặc nhiều móc khóa.

Có một cái nhìn tại

http://codeautomate.org/blog/2012/02/certificate-validation-using-java/ 

cho một mã snipped mà chỉ là không. Bit quan trọng là trong validateKeyChain() và về cơ bản bao gồm

cert = cert-to-validate 
    while(not self signed) { 
     extract issuer from cert 
     scan keychain(s) to find cert with a subject equal to the issuer 
     if none found - error 
     check if the signature is correct. 
     cert = issuers_cert 
    } 
    if not at the top/root - error 

Đối với cách bạn nhận được giấy chứng nhận/gốc trung gian - đó là một vấn đề khác nhau. Lưu ý rằng mã này hơi ngây thơ - và không hoàn toàn hiểu được việc ký chéo. Các java pkix gọi mặc dù mặc dù - BouncyCastle có một ví dụ.

Thông thường, bạn có thể xây dựng chứng chỉ gốc thành chuỗi khóa; nhưng các chứng chỉ trung gian thường cần được 'thu thập' hoặc phát hiện tự động hơn. Điều này thường yêu cầu truy vấn ngăn xếp SSL trong TLS hoặc tương tự.

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