Как использовать хранилище доверенных сертификатов Windows при использовании SSL?JAVA

Программисты JAVA общаются здесь
Anonymous
Как использовать хранилище доверенных сертификатов Windows при использовании SSL?

Сообщение Anonymous »

Я пытаюсь подключиться к серверу компании по протоколу HTTPS. Сертификаты сервера хранятся на всех клиентах (Windows), и я хочу настроить свое Java-приложение для использования хранилища доверенных сертификатов Windows.
Я установил javax.net.ssl.trustStoreType=Windows-ROOT, который, как я понимаю, должен разрешить Java использовать сертификаты, установленные в Windows.
Клиент создается с помощью этого метода:

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

static CloseableHttpClient getClientWindowsTrust() throws Exception {
System.setProperty("javax.net.ssl.trustStoreType", "Windows-ROOT");

SSLContext sslContext = SSLContext.getDefault();

DefaultClientTlsStrategy strat = new DefaultClientTlsStrategy(sslContext);

var connectionManager = PoolingHttpClientConnectionManagerBuilder.create()
.setTlsSocketStrategy(strat)
.build();

return HttpClients.custom()
.setConnectionManager(connectionManager)
.build();
}
Необходимые сертификаты находятся в хранилище доверенных сертификатов Windows, и другие приложения (которые, как я предполагаю, их используют) работают нормально.
Сообщение об ошибке:

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

TransportContext.java:363|Fatal (CERTIFICATE_UNKNOWN): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Что мне может не хватать? Как определить, где именно не удалось построить путь?
ОБНОВЛЕНИЕ
спасибо ответившим. Я попробовал все предложения, но безрезультатно. Затем я сосредоточился больше на сервере, поскольку перепробовал все, что мог придумать, на стороне клиента.
Сервер недавно получил новый промежуточный сертификат, и клиент не нашел его. Я попробовал другой сервер, на котором уже есть новый сертификат, и он сработал. Разница в том, что сервер 1 — это сервер Windows с Apache и Tomcat, а сервер 2 — контейнерный сервер.
В настоящий момент я предполагаю, что при установке Windows возникла проблема с конфигурацией. Я установил новый сертификат на другой сервер Windows, который раньше работал, а теперь он не работает.
Я опубликую еще одно обновление, когда получу дополнительную информацию.
Проблема решена
Это не проблема клиента. Сертификат был установлен на сервере коллегой, который забыл обновить конфигурацию Apache. Конфигурация по-прежнему ссылалась на старый промежуточный сертификат, и это вызывало проблему.

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