![](/img/trans.png)
[英]Enable HTTPS in a Spring Boot Java application with a P7B certificate
[英]Generate p7b certificate chain with bouncycastle in Java
我需要使用充氣城堡1.58生成p7b證書鏈。
在我們使用的舊版本(1.46)中,此代碼有效:
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);
}
但是,新版本的Bouncy Castle對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);
}
但是,我在generate的這一行上得到一個空指針異常:
CMSSignedData signedData = gen.generate(null);
我嘗試調試,並檢查證書是否已加載到JcaCertStore,因此該部分正常。
但是,當我嘗試調試充氣城堡庫時,調試器似乎找不到CMSSignedDataGenerator類的行號。
我正在使用Wildfly部署我的項目,並且將帶有源的jar附加到調試器,但是我看到了代碼,但是在類名旁邊,我沒有得到line ,所以我看不到null發生指針異常。
我使用以下代碼解決了該問題:
CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
Certificate [] chain = certificate.getCertificateChain();
try {
CMSProcessableByteArray msg = new CMSProcessableByteArray("".getBytes());
JcaCertStore store = new JcaCertStore(Arrays.asList(chain));
gen.addCertificates(store);
CMSSignedData signedData = gen.generate(msg);
return signedData.getEncoded();
} catch (Exception ex) {
logger.error("Failed to construct P7B response",ex);
throw new RuntimeException(ex);
}
但是,當您使用CMSSignedDataGenerator時 ,我認為這是一種黑客手段 ,它旨在進行簽名以生成p7b證書鏈。
在舊版本中,您可以將null用作已簽名的數據,但是現在您必須輸入一些數據,即使它只是一個空字節數組也是如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.