Я подключаюсь к конечной точке с двумя SSL, я могу подключиться через telnet, но при ответе на почтовый запрос от http-клиента я получаю
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
Я пытаюсь сделать это из локальной системы, кто ipуже занесен в белый список.
Я скопировал файл certificate.jks и cacerts с одного из промежуточных серверов, на котором правильно работают запросы
то, что я узнал в двухстороннем сервере назначения SSL-квитирования, также проверяет нашсертификат.который используется как предварительное условие
Я пробовал разные вещи, такие как
Настройка аргументов vm
-Djavax.net.ssl.keyStore=/home/****/certificateNew.jks
-Djavax.net.ssl.keyStorePassword=*****
Настройка через системное свойство
System.setProperty("javax.net.ssl.keyStore", "*****/certificateNew.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "*****");
System.setProperty("javax.net.ssl.keyStoreType", "JKS")
загрузка через контекст ssl, подобный этому
SSLContextBuilder builder = SSLContexts.custom();
KeyStore trustStore = KeyStore.getInstance("JKS");
try (InputStream is = Files.newInputStream(Paths.get("/*****/certificateNew.jks"))) {
trustStore.load(is, "****".toCharArray());
}
builder.loadTrustMaterial(trustStore);
SSLContext sslContext = builder.build();
httpClient = HttpClients.custom()
.setSSLContext(sslContext)
.setKeepAliveStrategy(keepAliveStrategy)
.setConnectionManager(connManager)
.setDefaultRequestConfig(config).build();
Я также пытался
SSLContext sslContext = new SSLContextBuilder()
.loadTrustMaterial(null, (certificate, authType) -> true).build()
Я использую SpringBoot и он использует внутренний tomcat.
Я пробовал несколько возможныхпути, но ни один из них не может решить эту проблему.Я получаю то же исключение.
Если это не помогает, как я могу получить сертификат из серверной коробки.И добавьте эти сертификаты при оформлении запроса.
Любая помощь приветствуется