Docker:将证书插入 ketstore

use*_*942 5 java openshift docker kubernetes 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" ]
Run Code Online (Sandbox Code Playgroud)

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

I'm deploying this image into my openshift/kubernetes cluster. Once I've connected to pod shell, I'm able to run this keytool... command rightly. So I mean, the command is well formed. There're no syntax problem or related issues...

So, I was excepting that the output of this command: keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts appears my certificate, but it doesn't appear.

Any ideas?

EDIT

Also I've tried writing this in 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"]
Run Code Online (Sandbox Code Playgroud)

小智 0

就像有人在评论中已经说过的那样 - 如果您想使用在部署时安装的 crt 文件,您必须将 keytool 命令添加到部署中。

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