Я хочу импортировать самоподписанный сертификат в Java, поэтому любое приложение Java, которое попытается установить соединение SSL, будет доверять этому сертификату.
Пока мне удалось импортировать его в
keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem
Тем не менее, когда я пытаюсь бежать, HTTPSClient.class
я все равно получаю:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: сбой построения пути PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
совершенно не нужны в первой части. Второй не делает какой-либо проверки подлинности. ПопробуйтеURLConnection
начать с простого . Вы уверены, что вы модифицировалиcacerts
вlib/security
вашей установке JRE? Вы пробовалиtrustmanager
вариант отладки ?Ответы:
В Windows самый простой способ - использовать программу portecle .
System.out.println(System.getProperty("java.home"));
В Linux:
Вы можете скачать сертификат SSL с веб-сервера, который уже использует его, следующим образом:
При желании проверьте информацию сертификата:
Импортируйте сертификат в хранилище ключей Java cacerts:
источник
ps -ef | grep java
который сказал мне, что мой java запускается из openjdk, расположенного в / usr / lib / jvm / java-openjdk / бен / Java. Кроме того, если это для веб-приложения, не забудьте перезапустить. Спасибо за помощь!!источник
В итоге я написал небольшой скрипт, который добавляет сертификаты в хранилища ключей, так что его гораздо проще использовать.
Вы можете получить последнюю версию с https://github.com/ssbarnea/keytool-trust
`` `
источник
Это сработало для меня. :)
источник
Если вы используете сертификат, подписанный центром сертификации, который по умолчанию не включен в файл Java cacerts, вам необходимо выполнить следующую настройку для соединений HTTPS. Чтобы импортировать сертификаты в кассы:
источник
Простая команда 'keytool' также работает в Windows и / или с Cygwin.
Если вы используете Cygwin, вот модифицированная команда, которую я использовал в нижней части ответа "S.Botha":
Выполните команду keytool изнутри, где в конце укажите путь к вашему новому сертификату, например, так:
Обратите внимание, потому что, если это в Cygwin, вы указываете путь к не-Cygwin программе, поэтому путь похож на DOS и в кавычках.
источник
Могу попробовать
я, честно говоря, понятия не имею, где он помещает ваш сертификат, если вы просто пишете,
cacerts
просто дайте ему полный путьисточник
установить сертификат в Java Linux
/ opt / jdk (версия) / bin / keytool -import -alias псевдоним -file certificate.cer -keystore cacerts -storepass пароль
источник
источник