HTTP-клиент Apache javax.net.ssl.SSLPeerUnverifiedException: узел не аутентифицирован

Мы разрабатываем приложение, используя tomcat и jersey.

В этом веб-приложении нам нужно подключиться кhttps Website сvalidне истекcertificate, Если я подключаюсь к этому сайту локально через мой браузер Chrome, все работает отлично! К сожалению, сервер Tomcat с нашим веб-приложением создает исключение. Мы используемApache HttpClient (4.0) подключиться к сайту https:

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)

Проблема с openssl, кажется, в том, что он использует неправильный путь/usr/lib/sslвместо/etc/ssl/certs, Если я использую аргумент CApath, указывающий на правильный путь, openssl работает нормально, может ли это быть проблемой с httpClient?

Итак, наш код для клиента по умолчанию довольно прост:

    client = new DefaultHttpClient();
    response = client.execute(url); //this throws the exception
    EntityUtils.consume(response.getEntity());

Это'Нельзя разрешить какие-либо сертификаты путем реализации пользовательского TrustedManager! Дальше читаю, что какой-то CA 's не являются частью JDK / JRE и поэтомусертификаты должны быть импортированы вручную вkeystore или использовать пользовательский, но thawte является хорошо известным CA и не долженэто работает по умолчанию?

РЕДАКТИРОВАТЬ

Я установил свойства javax.debug в catalina.sh, чтобы у меня была дополнительная информация о проблеме:

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

Буду признателен за любую помощь! Заранее спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос