HTTPS-клиент Java внезапно потерял способность взаимодействовать с сервером с помощью Let’s EncryptJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 HTTPS-клиент Java внезапно потерял способность взаимодействовать с сервером с помощью Let’s Encrypt

Сообщение Anonymous »

У меня есть сервер и клиент, написанные на Java, которые используют Let's Encrypt для сертификатов TLS/SSL.
Все работало отлично до 7 июля 2024 года, когда это произошло. перестал работать после того, как Let's Encrypt выпустил новые сертификаты. Клиент получит следующее сообщение об ошибке:

Ошибка построения пути PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенного target

Я предполагаю, что проблема вызвана тем, что Let's Encrypt обновляет свою цепочку доверия, поскольку даты идеально совпадают. В качестве теста я вернулся к более старому сертификату Let's Encrypt до внесения изменений, и он все еще работает, по крайней мере, до истечения срока его действия в недалеком будущем.
На основе других сообщений в Stack Overflow , наиболее вероятная причина в том, что у меня нет самых последних промежуточных центров сертификации. Однако, следуя предложениям других, нам не удалось заставить его работать.
  • Обновите Java 17 до Java 22
  • Загрузите промежуточные сертификаты отсюда: X1, R10 в виде pem-файлов.

    Добавьте их в JRE вручную.
  • Загрузите вручную. их в клиенте
[*]Получен сертификат с соответствующего URL

Загрузка веб-сайта, который использует те же сертификаты Let's Encrypt, что и Chrome, работает нормально. Я убедился, что Java 22 имеет последние сертификаты, соответствующие тем, что были на веб-сайте Let’s Encrypt.
Вот как я убедился, что у JRE есть правильные сертификаты. С помощью Chrome я проверил нужные мне отпечатки пальцев:
9D7C3F1AA6AD2B2EC0D5CF1E246F8D9AE6CBC9FD0755AD37BB974B1F2FB603F3
34C44664C5257A38FFAFAC3A2130138FFE22CE972F3660C78 8FDA87FA0B670F3
96BCEC06264976F37460779ACF28C5A7CFE8A3C0AAE11A8FFCEE05C0BDDF08C6
Соответствующие сертификаты внутри хранилище ключей:

Код: Выделить всё

$JAVA_HOME/bin/keytool -list -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit:

letsencrypt_r10, Jul 25, 2024, trustedCertEntry,
Certificate fingerprint (SHA-256): 9D:7C:3F:1A:A6:AD:2B:2E:C0:D5:CF:1E:24:6F:8D:9A:E6:CB:C9:FD:07:55:AD:37:BB:97:4B:1F:2F:B6:03:F3

letsencryptisrgx1 [jdk], Jul 25, 2024, trustedCertEntry,
Certificate fingerprint (SHA-256): 96:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6

webpage-cert, Jul 25, 2024, trustedCertEntry,
Certificate fingerprint (SHA-256): 34:C4:46:64:C5:25:7A:38:FF:AF:AC:3A:21:30:13:8F:FE:22:CE:97:2F:36:60:C7:88:FD:A8:7F:A0:B6:70:F3
Другие соответствующие ссылки:

Подробнее здесь: https://stackoverflow.com/questions/787 ... ng-let-s-e
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»