javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: сбой построения пути PKIX: sun.security.provider.certpath.SunCertPathBuilderException: не удалось найти действительный путь сертификации для запрошенной цели
• Когда я получил сообщение об ошибке, я попытался выяснить значение выражения в Google и обнаружил, что эта проблема возникает, когда сервер меняет свой сертификат HTTPS SSL, а наша старая версия Java не распознает корневой центр сертификации. (CA).
• Если вы можете получить доступ к URL-адресу HTTPS в своем браузере, то можно обновить Java для распознавания корневого CA.
• В браузере перейдите по URL-адресу HTTPS, к которому у Java нет доступа. Нажмите на цепочку сертификатов HTTPS (в Internet Explorer есть значок блокировки), нажмите на замок, чтобы просмотреть сертификат.
• Перейдите в «Детали» сертификата и «Копировать в файл». Скопируйте его в формате Base64 (.cer) . Он будет сохранен на вашем рабочем столе.
• Установите сертификат, игнорируя все предупреждения.
• Так я собрал информацию о сертификате URL-адреса, к которому я пытался получить доступ.
Теперь я должен был сделать свою версию Java известной о сертификате, чтобы в дальнейшем он не отказывался распознавать URL. В связи с этим я должен упомянуть, что, по-моему, информация о корневом сертификате по умолчанию остается в JDK-каталоге \ jre \ lib \ security , а пароль по умолчанию для доступа: changeit.
Для просмотра информации о каскадах необходимо выполнить следующие процедуры:
• Нажмите кнопку Пуск -> Выполнить
• Тип cmd. Откроется командная строка (может потребоваться открыть ее как администратор).
• Перейдите в каталог Java/jreX/bin
• Введите следующее
keytool -list -keystore D: \ Java \ jdk1.5.0_12 \ jre \ lib \ security \ cacerts
Содержит список текущих сертификатов, содержащихся в хранилище ключей. Это выглядит примерно так:
C: \ Documents and Settings \ NeelanjanaG> keytool -list -keystore D: \ Java \ jdk1.5.0_12 \ jre \ lib \ security \ cacerts
Введите пароль хранилища ключей: changeit
Тип хранилища ключей: jks
Поставщик Keystore: SUN
В вашем хранилище ключей содержится 44 записи
verisignclass3g2ca, 26 марта 2004 г., trustCertEntry,
Отпечаток сертификата (MD5): A2: 33: 9B: 4C: 74: 78: 73: D4: 6C: E7: C1: F3: 8D: CB: 5C: E9
entrustclientca, 9 января 2003 г., trustCertEntry,
Отпечаток сертификата (MD5): 0C: 41: 2F: 13: 5B: A0: 54: F5: 96: 66: 2D: 7E: CD: 0E: 03: F4
thawtepersonalbasicca, 13 февраля 1999 г., trustCertEntry,
Отпечаток сертификата (MD5): E6: 0B: D2: C9: CA: 2D: 88: DB: 1A: 71: 0E: 4B: 78: EB: 02: 41
addtrustclass1ca, 1 мая 2006 г., trustCertEntry,
Отпечаток сертификата (MD5): 1E: 42: 95: 02: 33: 92: 6B: B9: 5F: C0: 7F: DA: D6: B2: 4B: FC
verisignclass2g3ca, 26 марта 2004 г., trustCertEntry,
Отпечаток сертификата (MD5): F8: BE: C4: 63: 22: C9: A8: 46: 74: 8B: B8: 1D: 1E: 4A: 2B: F6
• Теперь мне пришлось включить ранее установленный сертификат в cacerts.
• Для этого используется следующая процедура:
keytool –import –noprompt –trustcacerts –alias ALIASNAME -file FILENAME_OF_THE_INSTALLED_CERTIFICATE -keystore PATH_TO_CACERTS_FILE -storepass ПАРОЛЬ
Если вы используете Java 7:
keytool –importcert –trustcacerts –alias ALIASNAME -file PATH_TO_FILENAME_OF_THE_INSTALLED_CERTIFICATE -keystore PATH_TO_CACERTS_FILE -storepass changeit
• Затем он добавит информацию о сертификате в файл cacert.
Это решение, которое я нашел для упомянутого выше исключения !!