我想使用相同的 Java Buildpack,可以在这里找到:https://github.com/cloudfoundry/java-buildpack/但我希望能够向此包添加公共(public)证书,因为如果没有此安装的证书,我的应用程序将无法正常运行。我将如何添加此证书并将更新的构建包部署到 PCF?
最佳答案
我强烈建议您不要尝试将证书添加到构建包本身。这需要 fork 构建包,并为您带来维护负担(您本质上需要永远维护该 fork )。
相反,我建议您将证书与您的应用程序捆绑在一起或使用 Bosh trusted certs to deploy the cert to all application containers by default 。
如果您只需要几个应用程序的证书,则将其与应用程序捆绑在一起会更容易。如果您需要在整个站点范围内使用它,例如公司/内部证书颁发机构,那么您应该将其部署为 Bosh 可信证书。
要与应用程序捆绑,有几个选项:
您可以设置
JAVA_OPTS
包括-Djavax.net.ssl.Truststore
并将其指向您与应用程序捆绑的信任库。请记住,这完全覆盖默认信任库,因此您需要拥有所有常用默认值以及自定义可信证书。最简单的方法是从默认信任库开始并向其中添加。例如:
cf set-env <app> JAVA_OPTS '-Djavax.net.ssl.TrustStore=classpath:resources/config/truststore'
您可以添加
.profile
运行自定义受信任证书并将其导入默认 keystore 的脚本。您的.profile
的内容脚本看起来像这样。#!/bin/bash $HOME/.java-buildpack/open_jdk_jre/bin/keytool -keystore $HOME/.java-buildpack/open_jdk_jre/lib/security/cacerts -storepass changeit -importcert -noprompt -alias MyCert -file $HOME/WEB-INF/ssl/MyCert.crt
获取
.profile
很棘手脚本位于正确的位置。它需要位于您生成的 WAR 或 JAR 文件的根目录中。如果你运行jar tf <jar-or-war-file>
,您应该看到.profile
列出没有任何引导路径。如果文件前面有路径,则说明位置错误。
希望有帮助!
关于java - 将 CA 证书添加到 Java Buildpack 以进行 PCF 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57042383/