无法使用Spring Rest Template - TrustStore问题访问HTTPS服务?

时间:2018-02-01 11:43:33

标签: spring ssl https resttemplate truststore

访问HTTPS服务时,我遇到以下问题:

错误: ..Certification authentication failed</TITLE> ... An attempt to authenticate with a client certificate failed. A valid client certificate is required to make this connection.

我正在使用Spring RestTemplate excahnge API:

restTemplate.exchange(reqInfo.getUrl(),HttpMethod.GET,requestEntity,String.class);

我尝试了两种方法来提供trustStore但仍然存在错误:

1。)作为参数传递: java -cp -Djavax.net.ssl.trustStore="trustStore.jks" -Djavax.net.ssl.trustStorePassword="pwd" Test

2。)设置属性

System.setProperty("javax.net.ssl.trustStore","path to truststore"); System.setProperty("javax.net.ssl.trustStorePassword","pwd");

我也尝试使用简单的Java代码使用HTTPclient然后它工作正常但是使用SPring RestTemplate没有选项正常工作,我在这里错过了什么?

注意:如果我卷曲了该URL,我会收到与未提供truststore相同的错误。因此我假设这个问题是由TrustStore引起的。

1 个答案:

答案 0 :(得分:0)

最后我能够解决上述问题。

在构建SSL上下文时,我没有加载密钥库(虽然我是通过参数传递它),因为我的密钥存储不可用,因此证书身份验证失败

以下代码修复了问题:(添加 loadKeyMaterial

sslcontext = SSLContexts.custom().loadTrustMaterial(trustStore, new TrustSelfSignedStrategy())
                            .loadKeyMaterial(keyStore, keyStorePwd).build();