Java8如何确保我们的代码检查完整的证书链?

Java8如何确保我们的代码检查完整的证书链?,java,ssl,resttemplate,Java,Ssl,Resttemplate,我有一个SpringBoot1.5应用程序,它正在与一些Web服务建立连接。在所有情况下,这些都是TLS 1.2连接。我通过以下JVM参数运行我的应用程序: -Djavax.net.ssl.keyStore=${KEYSTORE} \ -Djavax.net.ssl.keyStorePassword=${KEYSTORE_PW} -> password javax.net.ssl.keyStore只是一个jks文件,其中只有一个证书 我需要回答这个问题:在设置TLS连接时,如何知道我是否

我有一个SpringBoot1.5应用程序,它正在与一些Web服务建立连接。在所有情况下,这些都是TLS 1.2连接。我通过以下JVM参数运行我的应用程序:

-Djavax.net.ssl.keyStore=${KEYSTORE} \
-Djavax.net.ssl.keyStorePassword=${KEYSTORE_PW} -> password
javax.net.ssl.keyStore只是一个jks文件,其中只有一个证书

我需要回答这个问题:在设置TLS连接时,如何知道我是否正在检查完整的证书链?或者只是根证书?这仅仅取决于信任存储中包含的每个证书中的CA吗

我使用RestTemplate建立连接:

ResponseEntity<T> response = restTemplate.exchange(uri, HttpMethod.PUT, requestEntity, T.class);
ResponseEntity response=restemplate.exchange(uri、HttpMethod.PUT、requestEntity、T.class);
我的RestTemplate实例没有什么特别之处,我就是这样构建它的:

RestTemplate RestTemplate=新RestTemplate()

谢谢大家

更新日期:2019年2月14日

我想澄清一些事情。我100%确信我的代码使用TLS1.2。如果我从密钥存储中删除证书,那么所有调用都会失败,并出现SSL异常

我调用的服务的证书链由叶证书和中间证书组成。他们说他们将只更新leaf证书,他们说:

“如果客户端系统信任VendorX颁发的证书 完整的链,则需要更新新的叶证书。“


让我困惑的部分是“完整的链条”。这是什么意思?这是否意味着您可以验证链的一部分或整个链?

请检查此处的答案。这应该是您的一个起点:

我知道我的Rest模板已经检查了证书,因为如果我从密钥库中删除了证书,那么调用就会被拒绝。我将在我的问题中澄清这一点。虽然链接可能会有所帮助,但anwers必须是独立的。请阅读: