Tomcat 및 저지를 사용하여 응용 프로그램을 개발 중입니다.
certificate
이 만료되지 않은 valid
으로 https Website
에 연결해야하는이 웹 응용 프로그램 내에서. 크롬 브라우저를 통해이 웹 사이트에 로컬로 연결하면 모든 것이 잘 작동합니다! 불행히도 webapp이 포함 된 tomcat 서버는 예외를 throw합니다. 우리는 HTTPS 사이트에 연결하기 위해 Apache HttpClient (4.0)
을 사용하고 있습니다 :Apache HTTP 클라이언트 javax.net.ssl.SSLPeerUnverifiedException : 피어가 인증되지 않음
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:371)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:126)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:572)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:645)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
서버 인증서가 절대적으로 유효하고 thawte
에서입니다. 세 가지 온라인 도구가 인증서를 성공적으로 확인했습니다. OpenSSL을 가진
Verify return code: 20 (unable to get local issuer certificate)
문제는이 /etc/ssl/certs
대신 잘못된 경로 /usr/lib/ssl
를 사용하는 것 같다 :
Openssl
는 너무 문제, 간단한 오류를 나에게 세 가지 인증서를 보여주는하지만 던지고있다. 적절한 경로를 가리키는 CApath 인수를 사용하면 openssl이 제대로 작동하므로 httpClient와 관련된 문제 일 수 있습니까?
그래서 기본 클라이언트에 대한 우리의 코드는 매우 간단합니다 :
client = new DefaultHttpClient();
response = client.execute(url); //this throws the exception
EntityUtils.consume(response.getEntity());
그것은 사용자 정의 TrustedManager를 구현하여 모든 인증서를 허용하는 옵션이 아니에요! 더 많은 CA가 JDK/JRE의 일부가 아니므로 keystore
에 수동으로 인증서를 가져 오거나 사용자 정의 인증서를 사용해야합니다. 그러나 thawte는 잘 알려진 CA이므로 기본적으로 작동하지 않아야합니까?
http-bio-8080-exec-1, handling exception: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path validation failed:
java.security.cert.CertPathValidatorException: basic constraints check failed:
pathLenConstraint violated - this cert must be the last cert in the certification path
내가 어떤 도움을 주셔서 감사합니다 것입니다 : 나는이 문제에 대한 자세한 정보를 가질 수 있도록
편집
나는 catalina.sh에서 javax.debug 속성을 설정 않았다! 미리 감사드립니다.
을 가져올 때까지 변태가 작동하지 않았다 7 Thawte에 있다는 것을 나에게 보여? – beny23
@ beny23 나는 내가 4.x를 사용하고 있다고 말했다. – Alexander
어떤 자바 버전인가? – beny23