여전히 암호화에 멍청한 사람입니다. 나는 매일 간단한 일을 당황하게됩니다. 그리고 오늘은 그 당시의 시대 중 하나입니다.엔드 엔티티의 루트 인증서와 중간 인증서를 얻는 것
jounessy 성 도서관으로 자바에서 smime 메시지를 확인하고 싶습니다. 거의 생각 났지만 지금은 PKIXparameters 객체를 만드는 것이 문제입니다. 나는 다음과 같은 구조의 최종 엔티티 X509Certificate에 있고, 이제 가정 해 봅시다 :
내가 먼저 신뢰의 체인을 구축해야합니다,하지만 난 루트 및 중간을 추출하는 방법을 알아낼 수 없습니다 메시지를 확인하기 위해root certificate
+->intermediate certificate
+->end-entity certificate
최종 엔티티의 인증서. 난 그냥 단지 엔드 엔티티를 사용할 수
validation failed on certificate number -1, details: Trust anchor for certification path not found.
그리고 BTW :
내가 루트로 엔드 엔티티를 사용하여 시도했지만 작동하지 않았다 :
InputStream isCert = GetFISCertificate();
List list = new ArrayList();
X509Certificate rootCert = (X509Certificate) certificateFactory.generateCertificate(isCert);
list.add(rootCert);
CollectionCertStoreParameters params = new CollectionCertStoreParameters(list);
CertStore store = CertStore.getInstance("Collection", params, BC);
//create cert path
List certChain = new ArrayList();
certChain.add(rootCert);
CertPath certPath = certificateFactory.generateCertPath(certChain);
Set trust = Collections.singleton(new TrustAnchor(rootCert, null));
//validation
CertPathValidator certPathValidator = CertPathValidator.getInstance("PKIX", BC);
PKIXParameters pKIXParameters = new PKIXParameters(trust);
pKIXParameters.addCertStore(store);
pKIXParameters.setDate(new Date());
try {
CertPathValidatorResult result = certPathValidator.validate(certPath, pKIXParameters);
System.out.println("certificate path validated");
} catch (CertPathValidatorException e) {
System.out.println("validation failed on certificate number " + e.getIndex() + ", details: " + e.getMessage());
}
이 예외가있어 자체 서명 인증서 인 것처럼 메시지의 유효성을 검사하는 인증서?
준비가되어 있습니다. 그러나 나는 id-ad-caIssuers를 포함하는이 확장을 가진 인증서를 본 적이 없다고 생각합니다. 어쨌든, 좋은 대답. – Egl
@Egl id-ad-caIssuers와 OCSP (google.com의 인증서 및 브라질의 PKI 엔드 엔티티 모두에 해당)의 인증서를 보았습니다. 나는 그 중 하나만 가지고도 인증서를 보았습니다. 불행히도 CA들 사이에는 표준이 없다. –
답변 해 주셔서 감사합니다. 너 나 많이 도와 줬어! – revolt