java - Docker:将证书插入 keystore

标签 java docker kubernetes openshift dockerfile

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

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"]

最佳答案

就像有人在评论中已经说过的那样 - 如果您想使用在部署时安装的 crt 文件,您必须将 keytool 命令添加到部署中。
您在构建容器时尝试访问的 crt 尚不存在。

关于java - Docker:将证书插入 keystore ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51323398/

相关文章:

go - 如何设置 google stackdriver 以尊重 kubernetes 的日志记录严重性?

Kubernetes - 如果容器无法重新触发 init 容器,则强制重新启动 pod

java - 如何读取 JAX-RS( Jersey )中的 cookie

java - Java 中的 JSON 对象有问题吗?

mysql - 无法连接到 Windows 10 Docker mysql

Mac上的Docker TLS错误

java - 什么函数可以用来对 vector 进行排序?

java - 使用 onFling 更改 Imagebutton 图像

c# - 无法启动 Base!/app/.local-chromium/Linux-706915/chrome-linux/chrome : . .. libX11.so.6

kubernetes - 超时的 Cron 作业