APP访问HTTPS需要在jdk中导入cert。 通常,我这样做:
keytool -keystore "C:\Program Files\Java\jdk1.8.0_71\jre\lib\security\cacerts" -importcert -alias WoSign -file WS_CA1_NEW.cer
如果我的应用程序使用 java-buildpack 在 CF 中运行,我如何使用 java-buildpack 做同样的事情?
谢谢。
可以使用 BOSH(在 PCF Ops 管理器中也可用)受信任的证书支持来添加在所有应用程序(例如,在公司范围内使用的 CA)共享的替换 JRE 中的cacerts
文件。 最后,单个应用程序使用的证书可以打包在应用程序本身中(通常在META-INF
这样它们就不会被意外提供给用户),并与系统属性一起引用(例如-Djavax.net.ssl.trustStore=$PWS/app/META-INF/truststore.jks
)。
嗨@nebhale ,
我关注https://github.com/cloudfoundry/java-buildpack/blob/master/docs/jre-open_jdk_jre.md#custom -ca-certificates 并在登台期间出错。
你有什么想法吗? 谢谢!
顺便说一句,“cf push”可以通过使用官方 buildpack 成功。
错误日志:
Staging...
-----> Java Buildpack Version: ee0dec3 | https://github.com/zhongyi-zhang/java-buildpack.git#ee0dec3
-----> Downloading Open Jdk JRE 1.8.0_121 from https://java-buildpack.cloudfoundry.org/openjdk/trusty/x86_64/openjdk-1.8.0_121.tar.gz (found in cache)
Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.6s)
[Buildpack] ERROR Compile failed with exception #<Errno::EEXIST: File exists @ dir_s_mkdir - /tmp/app/.java-buildpack/open_jdk_jre/./lib/security/cacerts>
File exists @ dir_s_mkdir - /tmp/app/.java-buildpack/open_jdk_jre/./lib/security/cacerts
Failed to compile droplet
Exit status 223
Staging failed: Exited with status 223
FAILED
BuildpackCompileFailed
我们的测试表明这目前有效。 这个分支中有一个带有自定义cacerts
文件的分支。 您可以推送指定-b https://github.com/cloudfoundry/java-buildpack.git#custom-ca-certs
的应用程序,您将正确地看到您的应用程序阶段。
很难确切说明为什么无法复制您的文件,但可能是您添加到 fork 的cacerts
文件的权限。
哦,问题是cacerts
是一个 Java KeyStore
包含您想要信任的所有 CA 证书。
最有用的评论
可以使用 BOSH(在 PCF Ops 管理器中也可用)受信任的证书支持来添加在所有应用程序(例如,在公司范围内使用的 CA)共享的替换 JRE 中的
cacerts
文件。 最后,单个应用程序使用的证书可以打包在应用程序本身中(通常在META-INF
这样它们就不会被意外提供给用户),并与系统属性一起引用(例如-Djavax.net.ssl.trustStore=$PWS/app/META-INF/truststore.jks
)。