繁体   English   中英

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

[英]Java 8 How to make sure our code checks the full certificate chain?

我有Spring Boot 1.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);

我的RestTemplate实例没有花哨的东西,这是我如何构建它:

RestTemplate restTemplate =新的RestTemplate();

谢谢大家

更新Feb 14 2019

我想澄清一些事情。 我100%确定我的代码使用TLS 1.2。 如果我从密钥库中删除证书,那么所有调用都会因抱怨SSL异常而失败。

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

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

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

在此处查看Michal Foksa的答案。 它应该是您的起点: 如何使用Rest Template将TLS1.2强制到Rest客户端

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM