我遇到了两个启用SSL的端点,我能够通过telnet连接 但是当我遇到来自http客户端的发帖请求时,我得到了
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
我正在本地系统上尝试此操作,其IP已被列入白名单。
我已从其中一个请求正常运行的登台服务器中复制了certificate.jks和cacerts文件
我通过2种方式知道SSL握手目标服务器还可以验证我们的证书。作为先决条件共享
我尝试了
之类的不同方法设置虚拟机参数
-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。
我尝试了多种可能的方法,但没有一种能够解决此问题。我也遇到同样的异常。
如果这不能处理,如何从服务器盒中获取证书。并在发出请求时添加这些证书。
感谢您的帮助