将 CA 证书添加到 Java Buildpack 以进行 PCF 部署
Adding CA Certificate to Java Buildpack for PCF Deployment
我想使用可以在此处找到的相同 Java Buildpack:https://github.com/cloudfoundry/java-buildpack/ 但我希望能够向此包添加一个 public 证书,因为我的应用程序将如果没有安装此证书,则无法正常 运行。我将如何添加此证书并将更新的构建包部署到 PCF?
我强烈建议您不要尝试将证书添加到构建包本身。这需要分叉 buildpack,这会给您带来维护负担(您基本上需要永远维护该分叉)。
相反,我建议您将证书与您的应用捆绑在一起或使用 Bosh trusted certs to deploy the cert to all application containers by default。
如果您只需要几个应用程序的证书,将它与应用程序捆绑在一起会更容易。如果您在整个站点范围内需要它,例如 company/internal 证书颁发机构,那么您应该将其部署为 Bosh 可信证书。
要与应用程序捆绑,有几个选项:
您可以设置 JAVA_OPTS
以包含 -Djavax.net.ssl.Truststore
并将其指向您与应用捆绑的信任库。请记住,这会完全覆盖默认的信任库,因此您需要拥有所有常用的默认值以及您自定义的受信任证书。从默认信任库开始并添加到它是最简单的。
例如:
cf set-env <app> JAVA_OPTS '-Djavax.net.ssl.TrustStore=classpath:resources/config/truststore'
您可以添加一个 .profile
脚本,该脚本 运行 并将您的自定义可信证书导入默认密钥库。 .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 Buildpack:https://github.com/cloudfoundry/java-buildpack/ 但我希望能够向此包添加一个 public 证书,因为我的应用程序将如果没有安装此证书,则无法正常 运行。我将如何添加此证书并将更新的构建包部署到 PCF?
我强烈建议您不要尝试将证书添加到构建包本身。这需要分叉 buildpack,这会给您带来维护负担(您基本上需要永远维护该分叉)。
相反,我建议您将证书与您的应用捆绑在一起或使用 Bosh trusted certs to deploy the cert to all application containers by default。
如果您只需要几个应用程序的证书,将它与应用程序捆绑在一起会更容易。如果您在整个站点范围内需要它,例如 company/internal 证书颁发机构,那么您应该将其部署为 Bosh 可信证书。
要与应用程序捆绑,有几个选项:
您可以设置
JAVA_OPTS
以包含-Djavax.net.ssl.Truststore
并将其指向您与应用捆绑的信任库。请记住,这会完全覆盖默认的信任库,因此您需要拥有所有常用的默认值以及您自定义的受信任证书。从默认信任库开始并添加到它是最简单的。例如:
cf set-env <app> JAVA_OPTS '-Djavax.net.ssl.TrustStore=classpath:resources/config/truststore'
您可以添加一个
.profile
脚本,该脚本 运行 并将您的自定义可信证书导入默认密钥库。.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
没有任何前导路径。如果文件前面有路径,那就是放错地方了。
希望对您有所帮助!