Docker:将证书插入ketstore

时间:2018-07-13 10:48:19

标签: java docker kubernetes openshift dockerfile

我正在尝试将证书添加到$JAVA_HOME/jre/lib/security/cacerts上的Dockerfile信任库中:

FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
RUN keytool -import -alias vault -storepass changeit -keystore $JAVA_HOME/jre/lib/security/cacerts -noprompt -trustcacerts -file /var/run/secrets/kubernetes.io/certs/tls.crt
ADD wseccloudconfig-0.0.1-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

如您所见,我正在执行命令keytool...以便将证书插入cacerts

我正在将该映像部署到我的openshift / kubernetes集群中。连接到Pod Shell后,就可以正确运行此keytool...命令。所以我的意思是,命令格式正确。没有语法问题或相关问题...

因此,我除了以下命令:keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts的输出出现了我的证书,但没有出现。

有什么想法吗?

编辑

我也尝试过在Dockerfile中编写代码:

CMD ["keytool", "-import", "-alias", "vault", "-storepass", "changeit", "-keystore", "$JAVA_HOME/jre/lib/security/cacerts", "-noprompt", "-trustcacerts", "-file", "/var/run/secrets/kubernetes.io/certs/tls.crt"]

1 个答案:

答案 0 :(得分:0)

就像评论中已经提到的一样 - 如果您想使用在部署时挂载的 crt 文件,您必须将 keytool 命令添加到部署中。

您在构建容器时尝试访问的 crt 尚不存在。