Ошибка - параметр trustAnchors должен быть не пустым - PullRequest
431 голосов
/ 22 июля 2011

Я пытаюсь настроить свою электронную почту на Jenkins / Hudson, и я постоянно получаю сообщение об ошибке:

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be
    non-empty

Я видел много информации в Интернете об ошибке, но яне получил никого на работу.Я использую JDK от Sun в Fedora Linux (не OpenJDK).

Вот несколько вещей, которые я пробовал.Я попытался последовать совету из этого поста , но копирование кодеров из Windows на мою коробку Fedora с хостингом Jenkins не сработало.Я попытался выполнить это руководство , поскольку я пытаюсь настроить Gmail в качестве SMTP-сервера, но он также не работает.Я также попытался загрузить и переместить эти файлы cacert вручную и переместить их в мою папку Java, используя различные команды в этом руководстве .

Я открыт для любых предложений, поскольку я 'Я сейчас застрял.Я получил его на работу с сервера Windows Hudson, но я борюсь с Linux.

Ответы [ 35 ]

3 голосов
/ 04 июля 2017

Вы также можете столкнуться с этой ошибкой после обновления до Spring Boot 1.4.1 (или новее), поскольку он включает Tomcat 8.5.5 как часть своих зависимостей.

Проблема заключается в том, чтоиз-за способа, которым Tomcat имеет дело с хранилищем доверия.Если вы указали расположение хранилища доверенных сертификатов, совпадающее с вашим хранилищем ключей в конфигурации Spring Boot, вы, скорее всего, получите сообщение trustAnchors parameter must be non-empty при запуске приложения.

server.ssl.key-store=classpath:server.jks
server.ssl.trust-store=classpath:server.jks

Просто удалите *Конфигурация 1009 *, если вы не знаете, что она вам нужна, и в этом случае обратитесь к ссылкам ниже.

Следующие проблемы содержат более подробную информацию о проблеме:

2 голосов
/ 07 июня 2018

Я столкнулся с этой проблемой с SDK Android SDKManager. Для меня это решение сработало:

  1. Перейдите в / usr / lib / jvm / java-8-oracle / jre / lib / security /
  2. Заменить "cacert" на "cacert.original"

Файл cacert был крошечным (22B). Я установил oracle-java8-installer из ppa: webupd8team / java (согласно этому руководству: https://docs.nativescript.org/start/ns-setup-linux).

2 голосов
/ 31 мая 2016
System.setProperty("javax.net.ssl.trustStore", "C:\\Users\\user-id\\Desktop\\tomcat\\cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "passwd");

Вы должны добавить две вышеупомянутые строки в свой код.Не удается найти склад доверенных сертификатов.

1 голос
/ 01 ноября 2017

Ни одно из решений, которые я нашел в Интернете, не сработало, но измененная версия Ответ Питера Криенса , кажется, делает эту работу.

Сначала найдите папку Java, запустив /usr/libexec/java_home,Для меня это была 1.6.0.jdk версия.Затем перейдите в подпапку lib/security (для меня /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/security).

Затем удалите файл cacerts, если он есть, и найдите его в системе с помощью sudo find / -name "cacerts".Он нашел несколько элементов для меня, в версиях XCode или других приложений, которые я установил, но также в /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts, который я выбрал.

Используйте этот файл и сделайте символическую ссылку на него (находясь внутри Javaдо этой папки), sudo ln -fsh "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security/cacerts", и она должна работать.

У меня есть оба - Java от Apple, загрузка 2017-001 (https://support.apple.com/kb/dl1572 - я предполагаю, что именно отсюда и правильные сертификаты) иOracle, установленный на Mac OS X v10.12 (Sierra).

1 голос
/ 25 октября 2017

Я столкнулся с этой проблемой при запуске определенного набора Android для тестирования на Ubuntu 14.04 (Trusty Tahr). Две вещи сработали для меня, как предположил Шахин:

sudo update-ca-certificates -f

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure
1 голос
/ 12 января 2019

в Ubuntu 14.04 с openjdk 11 из ppa: openjdk-r / ppa это работает для меня:

в java.security изменить тип хранилища ключей на

keystore.type=jks

, то:

sudo dpkg --purge --force-depends ca-certificates-java
sudo apt-get install ca-certificates-java

когда вы проверяете, сработало ли это, убедитесь, что вы не используете ни одного демона со старой запущенной java (например, --no-daemon опция для gradle)

эта ошибка хорошо описывает все и поможет вам понять, что происходит https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1739631

1 голос
/ 20 марта 2017

Для записи, нет ответов здесь работал для меня. Моя сборка Gradle стала таинственно завершаться сбоем из-за этой ошибки, не удалось извлечь HEAD из Maven central для определенного POM файла.

Оказалось, что JAVA_HOME настроен на мою собственную сборку OpenJDK, которую я построил для отладки проблемы с javac. Установка его обратно в JDK, установленный в моей системе, исправила это.

0 голосов
/ 11 января 2017

в Ubuntu:

sudo apt install ca-сертификаты-java

или

sudo apt-get install ca-сертификаты-java

отсортировал это для меня.

0 голосов
/ 20 февраля 2015

Я столкнулся с проблемой при импорте проекта Gradle в IntelliJ IDEA 14. Решением было использование локальной копии Gradle вместо оболочки из каталога проекта.

0 голосов
/ 13 мая 2015

В Red Hat Linux я решил эту проблему, импортировав сертификаты в /etc/pki/java/cacerts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...