java - 将 CA 证书添加到 Java Buildpack 以进行 PCF 部署

标签 java package cloud-foundry buildpack

我想使用相同的 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/

相关文章:

Java 包和访问修饰符

java - 使用 Java 将新列附加到 Spark 中的现有 CSV 文件

go - 导入 `github.com/influxdb/influxdb/client/v2` 包时缺少符号

python - 从包导入时类属性会重置

cloud-foundry - 如何在没有 Pivotal Cloud Foundry 的情况下使用 Steeltoe

javascript - 无法连接到 CloudFoundry 上的 TCP 服务器(localhost node.js 工作正常)

java - 有两个sql插入的事务

java - 使用 SpringAMQP 时 RabbitMQ SSL 握手失败

java - 从字符串数组中选择一个随机元素?

sap - 无法获取访问 token : no valid JWT bearer found while accessing S4HANA via OAuth2Bearer