탄력성이있는 성 1.58을 사용하여 p7b 인증서 체인을 생성해야합니다. 탄력이 성의 새로운 버전으로 CMSSignedDataGenerator의 몇 가지 변화가, 그러나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);
}
를, 그래서 이렇게 내 코드를 수정 : 우리가 사용하는 이전 버전 (1.46)에서
,이 코드는 일 :
CMSSignedData signedData = gen.generate(null);
: 그러나
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);
}
, 나는 생성이 내부에이 줄에 널 포인터 예외가
디버깅을 시도하고 JcaCertStore에 인증서가로드되었는지 확인 했으므로 해당 부분이 정상입니다.
그러나 탄력 성 라이브러리를 디버깅하려고하면 디버거가 CMSSignedDataGenerator 클래스의 행 번호를 찾지 못하는 것 같습니다.
내 프로젝트를 배포하는 제이보스를 사용하고 있는데 내가 코드를 볼 수 있지만 바로 옆에 클래스 이름 난 사용할 수 일치하지 얻을 수 있지만, 디버거 소스와 함께 항아리를 첨부했습니다, 그래서 아니에요 null 포인터 예외가 발생하는 곳을 볼 수 있습니다. 나는 다음과 같은 코드를 사용하여 문제를 해결