首页 > 解决方案 > 如何使用 cacerts 和 jks trustore togeser,

问题描述

如何在一个 Spring Boot 应用程序中同时使用 cacerts 和 jks。

现在我在应用程序启动时使用 cacert 脚本进行外部加载

-Djavax.net.ssl.trustStore="/opt/app/cacerts" \

现在要使用另一个 microsevis,我需要配置另一个 SSL。我得到了一个用于设置 ssl 的 jks 文件

如何添加另一个委托人 jks

标签: javaspring-bootssljks

解决方案


看起来spring boot默认在启动期间加载jdk可信证书。尝试使用以下 vm 参数运行您的应用程序:-Djavax.net.debug=SSL,keymanager,trustmanager,ssl:handshake同时设置 application.properties 文件,如下所示

我已经尝试了基本设置,并且只配置了我的应用程序属性文件,请参见下面的内容。

server:
  port: 8443
  ssl:
    enabled: true
    key-store: classpath:identity.jks
    key-password: secret
    key-store-password: secret
    trust-store: classpath:truststore.jks
    trust-store-password: secret
    client-auth: need

启动我的应用程序时,我在日志中看到 spring 首先加载了默认的 jdk 信任库(cacerts),其中包含 93 个受信任的证书,然后它还加载了密钥条目和另一个受信任的证书。这两个条目来自我的密钥库和信任库。因此,您无需以编程方式将 jdk 信任库和您自己的信任库结合起来并将其提供给 spring。那么您是否可以尝试删除您的-Djavax.net.ssl.trustStore="/opt/app/cacerts" \行并调整您的 application.properties 文件,仅将您的自定义 jks 文件作为信任库引用?


推荐阅读