你基本上需要做的是構建一個證書鏈,如果你沒有得到它作爲一個鏈。證書鏈基本上由第零個位置的最終實體證書(也是葉證書,鏈中最重要的證書)組成,其次是次要證書。 CA證書是最不重要的。
所以這是通常的X.509證書鏈的樣子:
3. CA Certificate (self-signed)
|
|__ 2. Sub CA Certificate (signed by the above CA)
|
|__ 1. Sub-sub CA Certificate (if any) (signed by the above Sub CA)
|
|__ 0. End Entity Certificate (your certificate, signed by the above cert)
當你構建一個證書鏈,從自己的每個證書,你有,你有看到哪個證書是由誰來簽署然後以上述方式構建鏈(樹中的數字表示java證書數組中的索引)。
你可以通過查看SubjectDN和IssuerDN找到哪個證書是由誰簽署的。 Subject專有名稱是最終實體,Issuer專有名稱是簽署證書的實體的名稱。
如果您需要驗證證書是否由另一個證書籤名的程序,你可以這樣做:
userCert.verify(caCert.getPublicKey());
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
// Provided the certificate doesn't have certificate headers (---begin cert--- and ---end cert---)
Certificate cert = certificateFactory.generateCertificate(new FileInputStream(new File("CERTIFICATE_PATH")));
System.out.println(cert.getPublicKey());
:
您可以使用此代碼段提取的證書的公鑰