Если вы из Java кода попытаетесь обратиться к сайту или ресурсу сети с самоподписанным сертификатом, то выйдет ошибка:
1 2 3 4 5 |
java.security.cert.CertificateException: Untrusted Server Certificate Chain javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target |
Чтобы её решить, нам нужно экспортировать сертификат и сохранить его на компьютер. В браузере это можно сделать кликнув на значок с замком рядом с адресной строкой. Там обычно есть пункт «Посмотреть сертификат» или что-нибудь подобное. В режиме просмотра сертификата есть возможность сохранить его в файл «*.cer».
После сохранения файла на диск нам нужно загрузить его в хранилище ключей Java командой:
1 |
keytool.exe -trustcacerts -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit -alias mysecuresite.com -import -file certificate.cer |
keytool.exe находится в подкаталоге bin каталога с установленной версией Java.
mysecuresite.com — псевдоним, под которым будет сохранён ключ из нашего сертификата. Рекомендую использовать адрес сайта, из которого экспортировали сертификат.
certificate.cer — экспортированный файл сертификата.
«%JAVA_HOME%\jre\lib\security\cacerts» — путь к cacerts. Для Java 12 путь будет «%JAVA_HOME%\lib\security\cacerts» (без подкаталога jre).
В качестве удобной замены консоли рекомендую использовать kse, особенно когда часто приходится работать с ключевыми хранилищами в Java.
https://keystore-explorer.org/
This is a suspicious tool. Do not use it without checking sources