Изменить. В своем блоге я попытался отформатировать вопрос и принять ответ более презентабельно.
Вот исходная проблема.
Я получаю эту ошибку:
подробное сообщение sun.security.validator.ValidatorException: путь PKIX
не удалось построить:
sun.security.provider.certpath.SunCertPathBuilderException: невозможно
найти действительный путь сертификации для запрошенной цели
вызывает исключение javax.net.ssl.SSLHandshakeException :
sun.security.validator.ValidatorException: создание пути PKIX
не удалось: sun.security.provider.certpath.SunCertPathBuilderException:
невозможно найти действительный путь сертификации к запрошенной цели
Я использую Tomcat 6 в качестве веб-сервера. У меня есть два веб-приложения HTTPS, установленные на разных Tomcats и на разных портах, но на одном компьютере. Произнесите App1 (порт 8443) и App2 (порт 443). Приложение1 подключается к Приложению2. Когда приложение 1 подключается к приложению 2, я получаю вышеуказанную ошибку. Я знаю, что это очень распространенная ошибка, поэтому на разных форумах и сайтах встречал множество решений. У меня есть запись ниже в server.xml обоих Tomcats:
keystoreFile="c:/.keystore"
keystorePass="changeit"
На каждом сайте указывается одна и та же причина, по которой сертификат, предоставленный приложением 2, не находится в доверенном хранилище jvm приложения 1. Это похоже на правду, когда я пытался перейти по тому же URL-адресу в браузере IE, это работало (с потеплением, возникла проблема с сертификатом безопасности этого веб-сайта. Здесь я говорю, продолжайте работу с этим веб-сайтом). Но когда Java-клиент (в моем случае) обращается к тому же URL-адресу, я получаю вышеуказанную ошибку. Поэтому, чтобы поместить его в хранилище доверенных сертификатов, я попробовал следующие три варианта:
Вариант 1
System.setProperty("javax.net.ssl.trustStore", "C:/.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
Вариант 2
Настройка ниже в переменной среды
CATALINA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
Вариант 3
Настройка ниже в переменной среды
JAVA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
Результат
Но ничего не помогло.
То, что наконец сработало, это выполнение подхода Java, предложенного в разделе «Как обрабатывать недействительные сертификаты SSL с помощью Apache HttpClient?» от Паскаля Тивента, т.е. запуска программы InstallCert.
Но этот подход подходит для установки devbox, но я не могу использовать его в производственной среде.Мне интересно, почему три упомянутых выше подхода не сработали, когда я упомянул одни и те же значения в server.xml сервера App2 и те же значения в хранилище доверенных сертификатов, установив
System.setProperty("javax.net.ssl.trustStore", "C:/.keystore") and System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
в программе App1.
Для получения дополнительной информации о том, как я устанавливаю соединение:
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
if (conn instanceof HttpsURLConnection) {
HttpsURLConnection conn1 = (HttpsURLConnection) url.openConnection();
conn1.setHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
reply.load(conn1.getInputStream());
Подробнее здесь: https://stackoverflow.com/questions/961 ... validatore
Разрешение javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: не удалось построить путь PKI ⇐ JAVA
Программисты JAVA общаются здесь
1727090870
Anonymous
[b]Изменить.[/b] В своем блоге я попытался отформатировать вопрос и принять ответ более презентабельно.
Вот исходная проблема.
Я получаю эту ошибку:
подробное сообщение sun.security.validator.ValidatorException: путь PKIX
не удалось построить:
sun.security.provider.certpath.SunCertPathBuilderException: невозможно
найти действительный путь сертификации для запрошенной цели
вызывает исключение javax.net.ssl.SSLHandshakeException :
sun.security.validator.ValidatorException: создание пути PKIX
не удалось: sun.security.provider.certpath.SunCertPathBuilderException:
невозможно найти действительный путь сертификации к запрошенной цели
Я использую Tomcat 6 в качестве веб-сервера. У меня есть два веб-приложения HTTPS, установленные на разных Tomcats и на разных портах, но на одном компьютере. Произнесите App1 (порт 8443) и App2 (порт 443). Приложение1 подключается к Приложению2. Когда приложение 1 подключается к приложению 2, я получаю вышеуказанную ошибку. Я знаю, что это очень распространенная ошибка, поэтому на разных форумах и сайтах встречал множество решений. У меня есть запись ниже в server.xml обоих Tomcats:
keystoreFile="c:/.keystore"
keystorePass="changeit"
На каждом сайте указывается одна и та же причина, по которой сертификат, предоставленный приложением 2, не находится в доверенном хранилище jvm приложения 1. Это похоже на правду, когда я пытался перейти по тому же URL-адресу в браузере IE, это работало (с потеплением, возникла проблема с сертификатом безопасности этого веб-сайта. Здесь я говорю, продолжайте работу с этим веб-сайтом). Но когда Java-клиент (в моем случае) обращается к тому же URL-адресу, я получаю вышеуказанную ошибку. Поэтому, чтобы поместить его в хранилище доверенных сертификатов, я попробовал следующие три варианта:
Вариант 1
System.setProperty("javax.net.ssl.trustStore", "C:/.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
Вариант 2
Настройка ниже в переменной среды
CATALINA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
Вариант 3
Настройка ниже в переменной среды
JAVA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
Результат
Но ничего не помогло.
[b]То, что наконец сработало[/b], это выполнение подхода Java, предложенного в разделе «Как обрабатывать недействительные сертификаты SSL с помощью Apache HttpClient?» от Паскаля Тивента, т.е. запуска программы InstallCert.
[b]Но этот подход подходит для установки devbox, но я не могу использовать его в производственной среде.[/b]Мне интересно, почему три упомянутых выше подхода не сработали, когда я упомянул одни и те же значения в server.xml сервера App2 и те же значения в хранилище доверенных сертификатов, установив
System.setProperty("javax.net.ssl.trustStore", "C:/.keystore") and System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
в программе App1.
Для получения дополнительной информации о том, как я устанавливаю соединение:
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
if (conn instanceof HttpsURLConnection) {
HttpsURLConnection conn1 = (HttpsURLConnection) url.openConnection();
conn1.setHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
reply.load(conn1.getInputStream());
Подробнее здесь: [url]https://stackoverflow.com/questions/9619030/resolving-javax-net-ssl-sslhandshakeexception-sun-security-validator-validatore[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия