Ошибка - параметр 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 ]

11 голосов
/ 27 апреля 2018

Удаление пакета ca-certificate-java и его повторная установка работали для меня ( Ubuntu MATE 17.10 (Artful Aardvark)).

sudo dpkg --purge --force-depends ca-certificates-java

sudo apt-get install ca-certificates-java

Спасибо, jdstrand: Комментарий 1 к ошибке 983302, Re: ca-certificate-java не может установить Java cacerts на Oneiric Ocelot .

11 голосов
/ 31 декабря 2013

У меня было много проблем безопасности после обновления до OS X v10.9 (Mavericks):

  • Проблема SSL с Amazon AWS
  • Peerне аутентифицирован с Maven и Eclipse * Параметр
  • trustAnchors должен быть непустым

Я применил это обновление Java, и оно исправило все мои проблемы: http://support.apple.com/kb/DL1572?viewlocale=en_US

9 голосов
/ 24 июля 2015

Я ожидал, что такие вещи будут происходить из-за того, что я использую альтернативную JVM в моей Talend Open Studio (поддержка в настоящее время существует только до JDK 1.7). Я использую 8 в целях безопасности ... в любом случае

  • Обновите хранилище сертификатов:

    sudo update-ca-certificates -f
    

1012 * тогда *

  • добавить новое значение в параметры инициализации

    sudo gedit $(path to your architecture specific ini i.e. TOS_DI...ini)
    
    Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts
    

Для меня вторая запись сработала. Я думаю, что в зависимости от версии Talend Open Studio / TEnt + JVM, он имеет другое имя параметра, но ищет тот же файл хранилища ключей.

9 голосов
/ 04 августа 2017

Для меня это было вызвано отсутствием trustCertEntry в хранилище доверенных сертификатов.

Для тестирования используйте:

keytool -list -keystore keystore.jks

Это дает мне:

Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

cert-alias, 31-Jul-2017, PrivateKeyEntry

Несмотря на то, что мой PrivateKeyEntry содержит CA , его необходимо было импортировать отдельно :

keytool -import -alias root-ca1 -file rootca.crt -keystore keystore.jks

Импортирует сертификат, а затем повторно запускает keytool -list -keystore keystore.jks сейчасдает:

Your keystore contains 2 entries

cert-alias, 31-Jul-2017, PrivateKeyEntry,
Certificate fingerprint (SHA1):
<fingerprint>
root-ca1, 04-Aug-2017, trustedCertEntry,
Certificate fingerprint (SHA1):
<fingerprint>

Теперь у него есть trustCertEntry, и Tomcat успешно запустится.

5 голосов
/ 22 сентября 2017

Если вы испытываете это в Ubuntu с JDK9 и Maven, вы можете добавить эту опцию JVM - сначала проверьте, существует ли путь:

-Djavax.net.ssl.trustStore=/etc/ssl/certs/java/cacerts

Если файл отсутствует, попробуйте установить CA-Certificates-Java, как кто-то заметил:

sudo apt install ca-certificates-java
4 голосов
/ 23 апреля 2018

У меня была эта проблема при попытке использовать Maven 3 после обновления с Ubuntu 16.04 LTS (Xenial Xerus) до Ubuntu 18.04 LTS (Bionic Beaver).

Проверка / usr / lib / jvm / java-8-oracle / jre / lib / security показала, что мой файл cacerts был символической ссылкой, указывающей на /etc/ssl/certs/java/cacerts.

У меня также былфайл с подозрительным именем cacerts.original.

Я переименовал cacerts.original в cacerts, и это решило проблему.

3 голосов
/ 22 марта 2016

В моем случае файл JKS, используемый в клиентском приложении, был поврежден. Я создал новый и импортировал в него SSL-сертификаты конечного сервера. Затем я использовал новый JKS-файл в клиентском приложении в качестве хранилища доверия, например:

System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file);

Источник: Хранилище ключей SSL SSL и сертификатов

Я использую инструмент (KeyStore Explorer) для создания нового JKS. Вы можете скачать его по этой ссылке, KeyStore Explorer .

3 голосов
/ 15 ноября 2013

Я также столкнулся с этим в OS X после обновления OS X v10.9 (Mavericks), когда использовалась старая Java 6 и пытался получить доступ к URL-адресу HTTPS. Исправление было обратным Петру Криенсу; Мне нужно было скопировать cacerts из пространства 1.7 в местоположение, связанное с версией 1.6:

(as root)
umask 022
mkdir -p /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security
cp $(/usr/libexec/java_home -v 1.7)/jre/lib/security/cacerts \
    /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security
3 голосов
/ 02 октября 2018

В windows10 и openjdk было вызвано наличие пустого файла cacerts, распространяемого вместе с двоичным файлом. Ошибка объясняется здесь: https://github.com/AdoptOpenJDK/openjdk-build/issues/555

Вы можете скопировать в adoptOpenJdk8\jre\lib\security\cacerts файл из старой установки, например c:\Program Files\Java\jdk1.8.0_192\jre\lib\security\cacerts.

Версия с ошибкой AdoptOpenJDK: https://github.com/AdoptOpenJDK/openjdk8-releases/releases/download/jdk8u172-b11/OpenJDK8_x64_Win_jdk8u172-b11.zip

3 голосов
/ 29 октября 2017

У меня было это сообщение об ошибке на Java 9.0.1 на Linux. Это произошло из-за известной ошибки JDK, когда файл cacerts пуст в двоичном пакете .tar.gz (загружается из http://jdk.java.net/9/).

См. Параграф "известные проблемы" в Замечания к выпуску JDK 9.0.1 , где сказано, что "TLS не работает по умолчанию в OpenJDK 9".

В Debian / Ubuntu (и, возможно, других производных) простой обходной путь - заменить файл cacerts файлом из пакета "ca-сертификаты-java":

sudo apt install ca-certificates-java
cp /etc/ssl/certs/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts

В Red Hat Linux / CentOS вы можете сделать то же самое из пакета «ca-Certificates»:

sudo yum install ca-certificates
cp /etc/pki/java/cacerts /path/to/jdk-9.0.1/lib/security/cacerts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...