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

时间:2019-07-15 14:56:05

标签: java package pivotal-cloud-foundry buildpack

我希望使用可以在此处找到的Java Buildpack:https://github.com/cloudfoundry/java-buildpack/,但是我希望能够向该程序包添加公共证书,因为如果没有安装的证书,我的应用程序将无法正常运行。我将如何添加该证书并将更新的buildpack部署到PCF?

1 个答案:

答案 0 :(得分:2)

强烈建议您不要将证书添加到buildpack本身。这需要分叉buildpack并给您带来维护负担(您基本上需要永远维护该分叉)。

相反,我建议您将证书与应用程序捆绑在一起或使用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脚本,该脚本运行并将您的自定义受信任证书导入到默认密钥库中。您的.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没有任何前导路径。如果文件前面有路径,那么它在错误的位置。

希望有帮助!