2017-10-27 5 views
0

HTTPS를 통한 클라이언트 인증을 사용하는 SOAP 웹 서비스를 호출해야합니다.글래스 피 SSLHandshakeException : 치명적인 경고를 받았습니다 : unknown_ca

keyStore 파일로 클라이언트 인증서 (회사 호스팅 회사에서 가져옴)를 가져 왔습니다. 또한 서버 인증서를 서버에서 서버로 가져 와서 내 trustStore에 가져 왔습니다. 나는 'javax.net.ssl.keyStore'와 'javax.net.ssl.keyStorePassword'를 적절한 값으로 설정했다.

간단한 Java 클라이언트 (일부 추가 jar 포함)에서 웹 서비스를 호출하면 호출이 작동하고 서버에서 결과를 얻습니다.

glassfish-4 (동일한 java, 동일한 keyStore, 동일한 trustStore, 동일한 'javax.net.ssl.keyStore'값 등)에서 웹 서비스를 호출하면 예외가 발생합니다. 'com.sun.xml .ws.client.ClientTransportException : HTTP 전송 오류 : javax.net.ssl.SSLHandshakeException : 치명적인 경고를 수신했습니다 : unknown_ca '.

두 경우 모두 동일한 java 저장소, 동일한 키 저장소, 동일한 trustStore를 사용합니다. glassfish가없는 첫 번째 버전이 작동하므로 인증서가 괜찮은 것 같습니다. 글래스 피시의 두 번째 버전은 그렇지 않습니다.

glassfish-4는 특정 작업을 수행합니까? 다른 (제 3 자) 라이브러리의 문제점 일 수 있습니까? 내가 시도 할 수있는 추가 HTTP/SSL 설정이 있습니까? 그 밖의 무엇입니까?

아무 생각 없습니까? 도움 주셔서 감사합니다.

답변

0

문제점을 발견했습니다.

Glassfish는 추가 VM 속성 'com.sun.enterprise.security.httpsOutboundKeyAlias'가 필요합니다. 클라이언트 인증서의 별칭으로 설정해야합니다.

표준의 경우 java-config 영역의 domain.xml에 설정됩니다. 표준의 경우 -Dcom.sun.enterprise.security.httpsOutboundKeyAlias ​​= s1as로 설정됩니다.

값을 s1as를 인증서의 별칭으로 변경하십시오.

관련 문제