【发布时间】:2019-02-13 19:41:58
【问题描述】:
我有 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 = new RestTemplate();
谢谢大家。
2019 年 2 月 14 日更新
我想澄清一些事情。我 100% 确定我的代码使用 TLS 1.2。如果我从我的密钥库中删除我的证书,那么所有调用都会开始失败并抱怨 SSL 异常。
我正在调用的服务的证书链由叶证书和中间证书组成。他们说他们只会更新叶子证书,他们是这样说的:
“如果客户端系统信任 VendorX 颁发的证书 完整的链,则需要更新新的叶证书。”
让我困惑的部分是“完整的链条”。这意味着什么?这是否意味着您可以验证链的一部分或整个链?
【问题讨论】:
标签: java ssl resttemplate