아파치 HttpClient를 사용하여 제 3 자에게 https API 호출을하는 grails 1.3.7 애플리케이션이 있습니다. 타사 URL에 유효한 인증서가 있습니다. 나는 다음과 같이 요청을 만들고 실행한다.javax.net.ssl.SSLPeerUnverifiedException : 프로덕션 환경에서만 피어가 인증되지 않는 이유는 무엇입니까?
내 프로젝트를 dev 모드에서 실행할 때 잘 동작한다. 나는 또한 오류없이 말과 브라우저에서 동일한 URL을 직접 호출 할 수 있습니다. 내 프로젝트는 war 파일에 내장 정의 인증서/키 스토어가있는 바람둥이 인스턴스에 넣어 그러나, 일단 클라이언트는 내 요청이 다음 IOException를 표시해 실패 시작, HTTPS를 사용하여 미국에 연결할 수 있도록 :
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
나는 여기서 실패의 요점을 알아 내려고 노력하고있다.
왜 curl 또는 내 dev 모드에서 https 요청을 만드는 것이 https 구성된 tomcat 인스턴스에서 https 요청을하는 것과 다른가요?
tomcat 인스턴스는 공개적으로 액세스 할 수 없지만 브라우저에서 연결할 때 인증서 문제가 없습니다 (Chrome에서 자세한 curl 요청과 마찬가지로 인증서가 정상적으로 처리됩니다).
나는 어떤 스트레칭으로도 https/ssl 전문가가 아니므로 무엇이 잘못되었는지, 왜 잘못되었는지, 어떻게 고칠 수 있는지에 대한 설명을 듣고 싶습니다. 다른 필요한 정보를 제공 할 수 있습니다.
--- 업데이트 --- 아래에 제안 나는 javax.net.debug
를 활성화 출력은 다음과 같은 오류가 포함 :
java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be\
non-empty
내 인터넷 검색은 내가이 문제가 난 때문이라고 생각했다을
-Djavax.net.ssl.trustStore=/path/to/tomcat/conf/myStore.jks
그게 사실이라면 내가 myStore.jks에 필요한 것들을 추가하고 모두가 행복하도록 기본값을 재정의 할 수 없습니다 방법 : 바람둥이를 시작할 때 다음과 같은 자바 옵트를 사용하고 계십니까?
'javax.net.debug'속성을 사용하여 SSL 디버깅을 켜보십시오. http://www.herongyang.com/JDK/SSL-Socket-Communication-Debug-javax-net-debug.html –
을 참조하십시오. 나는 그것을 가능하게함으로써 제공된 작은 정보로 게시물을 갱신했다. – twilbrand