无法使用Spring Rest模板访问HTTPS服务-信任库问题?

无法使用Spring Rest模板访问HTTPS服务-信任库问题?,spring,ssl,https,resttemplate,truststore,Spring,Ssl,Https,Resttemplate,Truststore,访问HTTPS服务时,我面临以下问题: 错误: 。证书验证失败 ... 尝试使用客户端证书进行身份验证失败。 建立此连接需要有效的客户端证书。 我正在使用Spring REST模板excahnge API: restemplate.exchange(reqInfo.getUrl(),HttpMethod.GET,requestEntity,String.class) 我尝试了两种方法来提供信任库,但错误仍然存在: 1.)作为参数传递: java-cp-Djavax.net.ssl.trustSt

访问HTTPS服务时,我面临以下问题:

错误:
。证书验证失败
...
尝试使用客户端证书进行身份验证失败。
建立此连接需要有效的客户端证书。

我正在使用Spring REST模板excahnge API:

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

我尝试了两种方法来提供信任库,但错误仍然存在:

1.)作为参数传递:
java-cp-Djavax.net.ssl.trustStore=“trustStore.jks”
-Djavax.net.ssl.trustStorePassword=“pwd”测试

2.)设置属性

System.setProperty(“javax.net.ssl.trustStore”,“信任库路径”);
setProperty(“javax.net.ssl.trustStorePassword”,“pwd”)

我还尝试了使用HTTPclient编写简单的Java代码,它工作得很好,但是使用SpringRestTemplate,所有选项都不起作用,我是不是遗漏了什么


注意:如果我对该URL进行卷曲,我会得到与未提供truststore相同的错误。因此,我假设这个问题是由于信任库造成的。

最后我能够解决上述问题

在构建SSL上下文时,我没有加载密钥存储(尽管我通过参数传递它),因此,由于密钥存储不可用,我获得认证身份验证失败

下面的代码修复了该问题:(添加了loadKeyMaterial

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