3

Недавно я переключился на Let's Encrypt Private Beta для нескольких моих доменных имен, и, как следствие, некоторые из моих Java-программ перестали работать, потому что я считаю, что сертификат не находится в хранилище доверенных сертификатов.

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: не удалось построить путь PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели

Я пытался делать разные вещи, например заходить на панель конфигурации Java в Windows или добавлять корневые сертификаты в cacerts.

Как экспортировать / загрузить файл .csr или .p12 из корневого ЦС Let's Encrypt, чтобы импортировать его в список сертификатов Java, предпочтительно таким образом, чтобы были приняты все защищенные домены Let's Encrypt, а не только мой домен?


Я попытался загрузить корневые сертификаты по адресу https://letsencrypt.org/certificates/ и добавить их в списки, но безрезультатно. Я также попытался добавить /etc/letsencrypt/live/<my_website>/cert.pem на сайты, но это не сработало. Я даже пытался добавить его в cacerts с помощью keytool, используя это: https://stackoverflow.com/questions/2138940/import-pem-into-java-key-store Независимо от того, что я пытаюсь, это не работает ( та же ошибка выше появляется).

Среди поиска в Google, я также нашел это: https://community.letsencrypt.org/t/will-the-cross-root-cover-trust-by-the-default-list-in-the -jdk-jre/134/13, но не смог использовать информацию внутри него.

2 ответа2

1

Обновление: Согласно https://community.letsencrypt.org/t/which-browsers-and-operating-systems-support-lets-encrypt/4394 , DST Root CA X3 был добавлен в версиях 7u111+ и 8u101+ 2016-07- 19 поэтому может быть необязательно добавлять сертификаты в обновленные версии JDK/JRE 7 и 8.


Я исправил это, импортировав промежуточные сертификаты (https://letsencrypt.org/certificates/) в хранилище доверенных сертификатов (используя keytool или portecle, см. Ссылку ниже). Очевидно, что добавление корневого сертификата "ISRG Root X1" само по себе не сработало, добавление всех сертификатов привело к исчезновению ошибок.


Чтобы добиться этого, я следовал за наиболее популярным ответом на этот вопрос: https://stackoverflow.com/questions/11617210/how-to-properly-import-a-selfsigned-certificate-into-java-keystore-that-is- помогло , но он также должен работать с https://stackoverflow.com/questions/2138940/import-pem-into-java-key-store

1

Загрузите все сертификаты на https://letsencrypt.org/certificates/ (выберите формат der) и добавьте их один за другим с помощью такой команды (например, letsencryptauthorityx1.der):

keytool -import -keystore PATH_TO_JDK\jre\lib\security\cacerts -storepass changeit -noprompt -trustcacerts -alias letsencryptauthorityx1 -file PATH_TO_DOWNLOADS\letsencryptauthorityx1.der

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .