チェーンとして取得しなかった場合は、基本的に証明書チェーンを構築する必要があります。証明書チェーンは、基本的に、0番目のエンドエンティティ証明書(さらに、リーフ証明書、チェーン内の最も重要な証明書)とそれに続く重要でない証明書で構成されます。 CA証明書が最も重要ではありません。
証明書を構築している
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)
は、各証明書から自分をチェーン、あなたが持っている、あなたが誰によって署名された証明書を参照する必要があります。
は、これは通常のX.509証明書チェーンがどのように見えるかです上記の方法でチェーンを構築します(ツリー内の数字はjavaの証明書配列内のインデックスを示します)。
あなたはのSubjectDNとのissuerDNを見て、誰によって署名された証明書を見つけることができます。サブジェクトの識別名は終了エンティティであり、発行者識別名は証明書に署名したエンティティの名前です。
証明書がプログラム別の証明書によって署名されているかどうかを確認する必要がある場合は、あなたがこれを行うことができます:
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());
:
あなたは、このコードスニペットを使用して証明書から公開鍵を抽出することができます