bouncy castle 1.58を使用してp7b証明書チェーンを生成する必要があります。私たちが使用古いバージョン(1.46)でJavaでbouncycastleでp7b証明書チェーンを生成する
は、このコードが働いた:
CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
Certificate [] chain = certificate.getCertificateChain();
CertStore certStore;
try {
certStore = CertStore.getInstance("Collection", new CollectionCertStoreParameters(Arrays.asList(chain)));
gen.addCertificatesAndCRLs(certStore);
CMSSignedData signedData = gen.generate(null,(Provider)null);
return signedData.getEncoded();
} catch (Exception ex) {
logger.error("Failed to construct P7B response",ex);
throw new RuntimeException(ex);
}
はしかし、弾む城の新しいバージョンでCMSSignedDataGeneratorのいくつかの変更がありますので、私はこのように私のコードを変更しました:
CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
Certificate [] chain = certificate.getCertificateChain();
try {
JcaCertStore store = new JcaCertStore(Arrays.asList(chain));
gen.addCertificates(store);
CMSSignedData signedData = gen.generate(null);
return signedData.getEncoded();
} catch (Exception ex) {
logger.error("Failed to construct P7B response",ex);
throw new RuntimeException(ex);
}
しかし、私は生成内でこの行にnullポインタ例外を取得:
CMSSignedData signedData = gen.generate(null);
デバッグしようとしましたが、JcaCertStoreに証明書がロードされていることを確認しました。
しかし、バウンシーキャッスルライブラリをデバッグしようとすると、デバッガはCMSSignedDataGeneratorクラスの行番号を見つけることができないようです。
私はWildflyを使用してプロジェクトを展開していますが、ソースをデバッガに添付しましたが、コードが表示されますがクラス名のすぐ隣に行がありません、そうではありませんNULLポインター例外がどこで発生するかを見ることができます。私は、次のコード使用して問題を解決し