2017-04-17 4 views
1

인증서를 읽는 데 아래 방법을 사용하고 있습니다.CA 인증서를 읽지 못했습니다 (GetCertificateChain이 전체 체인을 반환하지 않음)

KeyStore ks = KeyStore.getInstance("pkcs12"); 
    ks.load(in, password); 
    String alias = ks.aliases().nextElement(); 
    Certificate[] chain = ks.getCertificateChain(alias); 
    ... 

이 방법은 매우 기능적이지만 인증서의 전체 문자열을로드하지 않는 인증서에서 문제가 발생했습니다. 예 1의 경우

: When reading certificate 2 the statement below returns only one string

아무도 무슨 일이 일어나고 될 수있는 아이디어가 있습니까 : 예 2의 경우 When reading certificate 1 the statement below returns 4 strings

? 더 설명하려고

편집

,이 인증서는 WS에 연결하는 데 사용됩니다. 통신 프로세스 중에 WS는 다음과 같은 거부를 반환합니다. 연결이 종료되었습니다. javax.net.ssl.SSLHandshakeException : 치명적인 경고를 받았습니다. unknown_ca 이 WS에 연결하려면 완전한 인증 체인 프레젠테이션이 필요합니다.

인증서 아래에 언급 한 바와 같이

는 JAVA에서 실패를 보여 주지만, 제대로 API documentation에 따르면 인증 체인

답변

0

를 표시, .NET에서 완벽하게 작동합니다 :

결과 : 인증서 체인 (사용자 증명서가 최초로 계속되는 0 개 (살) 이상의 인증 기관)의 순서 부. 지정된 별명이 존재하지 않는 경우, 또는 증명서 체인이 포함되지 않은 경우는 null

이것은 체인에 더 이상 인증서가 없거나 (자체 서명 된 인증서) 필수 체인 요소가 PKCS # 12 메시지에 포함되어 있지 않으며 다른 소스를 통해 사용할 수 없다는 것을 의미합니다.

+0

귀하의 의견을 이해합니다. 그러나 .NET을 통해 가져온 경우이 동일한 인증서가 올바르게 작동하기 때문에 문제가 계속됩니다. .NET의 예제를 사용하면 시스템이 모든 인증서 체인을로드하고 표시 할 수 있습니다. – Blomersi

+0

.NET과 Java는 서로 다른 API를 사용하는 서로 다른 플랫폼이며 서로 다른 결과를 생성 할 수 있습니다. – Crypt32

관련 문제