【问题标题】:Java 8 How to make sure our code checks the full certificate chain?Java 8 如何确保我们的代码检查完整的证书链?
【发布时间】: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


    【解决方案1】:

    在此处查看Michal Foksa 的答案。它应该是您的起点:How to enforce TLS1.2 to Rest client using Rest Template

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    相关资源
    最近更新 更多