处理2路SSL端点的SSLHandshakeException

时间:2018-09-26 13:36:06

标签: java ssl networking

我遇到了两个启用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。

我尝试了多种可能的方法,但没有一种能够解决此问题。我也遇到同样的异常。

如果这不能处理,如何从服务器盒中获取证书。并在发出请求时添加这些证书。

感谢您的帮助

0 个答案:

没有答案