Hy Guys!私はbouncycastleを使用してx.509証明書を作成しようとしています。これは別の証明書で署名し、PEMベース64形式で保存する必要があります。証明書パス(証明書チェーン)付きのbouncycastleを使用してx.509証明書を作成
私はすでに自己署名証明書(公開鍵と秘密鍵)を持っています。今、私は新しいものを作成し、既存の自己署名証明書で署名したいと思います。
PEMWriter pemWriter = new PEMWriter(new PrintWriter(System.out));
pemWriter.writeObject(cert);
pemWriter.flush();
:
cert.verify(caCert.getPublicKey());
は、その後、私はPEMベース64にそれをデコード:
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "BC");
keyPairGenerator.initialize(1024, new SecureRandom());
KeyPair keyPair = keyPairGenerator.generateKeyPair();
X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
X500Principal dnName = new X500Principal("CN=Sergey");
certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));
certGen.setSubjectDN(dnName);
certGen.setIssuerDN(caCert.getSubjectX500Principal());
certGen.setNotBefore(validityBeginDate);
certGen.setNotAfter(validityEndDate);
certGen.setPublicKey(keyPair.getPublic());
certGen.setSignatureAlgorithm("SHA256WithRSAEncryption");
certGen.addExtension(X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifierStructure(caCert));
certGen.addExtension(X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifierStructure(keyPair.getPublic()));
X509Certificate cert = certGen.generate(caCertPrivateKey, "BC");
検証は、それが成功しcaCertによって署名されたことを私の視点から意味し、例外なしに通過しました
私は次のような出力を得ます:
----- BEGIN CERTIFICATE -----
MIIDDjCCAnegAwIBAgIBFDAN ........
----- END CERTIFICATE -----の
私はそれを開くと、私は次を参照してください。
caCertが正常に署名した場合、認証チェーンが存在しないのはなぜですか?
私は期待どおりに認証チェーンを見るために私のコードで変更する必要がありますか?