Сервер ResourceAccessException выбрал TLSv1, но эта версия протокола не включена или не поддерживается клиентом - PullRequest
0 голосов
/ 25 мая 2020

Я использую Spring BOOT 2.0.4.RELEASE И Spring RestTemplate по умолчанию для отправки запроса POST во внешний API. Я также пробовал Apache CloseableHttpClient. Оба работают нормально на моем локальном компьютере, но не работают на сервере с ошибкой: «Сервер выбрал TLSv1, но эта версия протокола не включена или не поддерживается клиентом».

В java .security на сервере У меня:

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \
    EC keySize < 224, 3DES_EDE_CBC, anon, NULL

Я почти уверен, что проблема с сервером. У меня установлена ​​CentOS с java 1.8.0.242. Я пробовал все, включая включение TLSv1.2 как в файле свойств, так и в свойствах системы, а также с помощью Spring Boot.

jdk.tls.client.protocols=TLSv1.2
https.protocols=TLSv1.2


@Component
public class CustomContainer implements
        WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.addConnectorCustomizers(new TomcatConnectorCustomizer()
        {
            @Override
            public void customize(Connector connector)
            {
                connector.setAttribute("sslProtocols", "TLSv1.1,TLSv1.2");
                connector.setAttribute("sslEnabledProtocols", "TLSv1.1,TLSv1.2");
            }
        });
    }
}

Ничего не получилось

...