tomcat 将证书添加到信任库

tomcat add certificate to truststore

我在 kuberneties 集群上部署了 java Web 应用程序并在 tomcat (tomcat:9.0.37) 容器上运行。我的应用程序与 ABC API 连接,为了连接到 ABC API,我需要在我的信任库中拥有 ABC API 证书。 对于我的本地测试,我可以使用 keytool 命令将证书添加到我的 JRE cecart,如下面的命令 keytool -importcert -alias startssl -keystore /usr/local/openjdk-8/jre/lib/security/cacerts -storepass changeit -file ABC.cert 但我想知道这是将证书添加到信任库的唯一方法还是我可以在信任库中添加证书的其他方法。

首先,如果您想为 SSL/TLS 使用与其他目的不同的默认信任库 ,但仍然 JRE-wide,您可以使用 (JRE)/lib/security/jssecacerts 而不是 (JRE)/lib/security/cacerts。与由 JRE 包或平台填充许多常见 CA 的 cacerts 不同,jssecacerts 开始时是空的;如果您想要任何常见的 CA,则必须显式添加它们,可以选择从 cacerts one-by-one 复制或只复制整个 cacerts 文件。我不知道你会不会把这个算作'other' 还是不会

其次,您可以使用系统属性 javax.net.ssl.trustStore* 更改 JVM 实例 的默认信任库;参见 the documentation (a few pages into the second table, Table 8-3) and more specifically this subordinate section

第三,对于 JVM 中的特定连接(有时是连接组),您可以在创建连接的代码中指定不同的信任库;该方法因创建连接的不同方式而异,您没有确定。直接使用 SSLSocketSSLEngine 是一回事; java.net.UrlConnectionjava.net.http.HttpClient (在 j11+ 中)是不同的; Apache 或许多其他中间件再次不同。与其花费数小时尝试编写所有可能的选项(其中大部分都会被浪费),不如让您再次询问是否需要此选项。在 Whosebug 的口头禅中,“展示你的代码”。