У меня есть приложение Java, работающее на клиентах Windows 11. Он подключается к приложению Java Server через HTTPS. JRE-это среда выполнения OpenJDK (Temurin) (Build 1.8.0_452-B09). Сервер - Linux Rhel. При настройке требуемых корневых сертификатов в файле CACERT клиента JRES все работает правильно. Я также могу получить доступ к ресурсу HTTPS через браузер. Таким образом, браузер уже знает сертификаты компаний. Я создал запрос на сертификат и получил сертификат от моей компании, используя стандартную процедуру компаний. Я создал защищенный паролем хранилища ключей. Внутри приложения Java используется экземпляр прилиний. Я настроил его на поддержку HTTPS. Как я уже сказал, когда я устанавливаю корневой и промежуточный сертификат в файл Store Cert Cert Cert, все работает.-Djavax.net.ssl.trustStore=NUL
-Djavax.net.ssl.trustStoreType=Windows-ROOT
Это в конечном итоге: javax.net.ssl.sslhandshakeexception: Pkix Path Построение не удалось: sun.security.provider.certpath.suncertpathbuilderexception: невозможно найти действительный путь сертификации к запрошенной цели
, когда я настраиваю это: p> p> p> p> p> p> p>
.-Djavax.net.ssl.trustStore=NUL
-Djavax.net.ssl.trustStoreType=Windows-MY
Это в конечном итоге: javax.net.ssl.sslexception: Неожиданная ошибка: java.security.invalidalgorithmparameterexception: параметр Trustanchors должен быть неэптиш
Настройка
-Djavax.net.debug=ssl
< /code>
показывает: < /p>
javax.net.ssl|FINE|01|main|2025-07-24 12:20:49.964 CEST|SSLCipher.java:438|jdk.tls.keyLimits: entry = AES/GCM/NoPadding KeyUpdate 2^37. AES/GCM/NOPADDING:KEYUPDATE = 137438953472
javax.net.ssl|FINE|01|main|2025-07-24 12:20:55.083 CEST|Utilities.java:73|the previous server name in SNI (type=host_name (0), value=full.qualified.host.name) was replaced with (type=host_name (0), value=full.qualified.host.name)
javax.net.ssl|FINE|01|main|2025-07-24 12:20:55.136 CEST|SSLCipher.java:1817|KeyLimit read side: algorithm = AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|FINE|01|main|2025-07-24 12:20:55.141 CEST|SSLCipher.java:1971|KeyLimit write side: algorithm = AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|WARNING|01|main|2025-07-24 12:20:55.162 CEST|SSLSocketImpl.java:1546|handling exception (
"throwable" : {
java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty`
Таким образом, кажется, что хранилище доверия не может быть доступен по какой -то причине.
Любая помощь в этом высоко ценится. Эти вопросы StackOverflow привели меня к ответу:
java client не выбирает корневые /промежуточные сертификаты из Windows Trust Store
. У клиента TLS должен быть промежуточный CA в трастовом магазине? />https://docs.cloudbees.com/docs/cloudbe ... rtificates
Короче говоря: Короче говоря, ключ к серверу, содержащий секрет, также нуждаются в root и интерфейс. Затем на сайте Windows все работает, как и ожидалось.
Я настраиваю это: < /p>
-Djavax.net.ssl.trustStore=NUL
-Djavax.net.ssl.trustStoreType=Windows-ROOT
Подробнее здесь: https://stackoverflow.com/questions/797 ... a-security
Использование магазина сертификатов Windows в Java Application for Https выходит из строя с Java.security.invalidalgorit ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение