java - 如何在docker内为Java应用程序添加多个SSL证书?

标签 java docker ssl-certificate dockerfile

我是 jetty worker 的新手。我想在 Docker 内为 Java 应用程序添加多个证书。我在 Dockerfile 中使用此代码:

RUN keytool -importcert -noprompt -trustcacerts -alias artifactory -file /files/cert.crt -keystore local -storepass changeit

它工作正常,但仅限于一个证书。如何使用一行命令或在某个周期或使用 bash 文件添加/files 文件夹中的所有证书?

更新:我使用 next bash 添加证书:

for cert in ${tempdir}/*.crt; do
cert2=$(basename $cert)
echo "# ${cert2}" >> ${destdir}/${cert2}
${openssl} x509 -inform der -in ${cert} -outform pem -out ${destdir}/${cert2}
keytool -importcert -noprompt -trustcacerts -alias artifactory -file /${destdir}/${cert2} -keystore local -storepass changeit
done

但出现下一个错误:“keytool:找不到命令”。当我在 docker 容器中运行命令 keytool 时,它工作正常。

最佳答案

在dockerfile中调用bash文件:

RUN apk update && apk add bash openssl wget && rm -rf /var/cache/apk/*
COPY getcerts.sh getcerts.sh
RUN chmod +x getcerts.sh && ./getcerts.sh

Bash 脚本:

for cert in ${tempdir}/*.crt; do
keytool -importcert -noprompt -trustcacerts -alias artifactory-${cert2} -file /${destdir}/${cert2} -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
done

关于java - 如何在docker内为Java应用程序添加多个SSL证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56424053/

相关文章:

docker - "service docker start"和 "docker -d"有什么区别?

java - 如何使用命令行为JAVA分配空间

java - 关闭选定的 Spring Boot 系统指标

node.js - 如何将上传的文件保存在node js docker容器外部(即linux主机内部)?

Docker 本地注册表尝试将图像推送到 docker.io

node.js - 尝试读取 fullchain.pem 时出现 EPERM 错误

java - Glide 过渡中断变换

java - 内存处理导致数据污染的风险 - JAVA

python - SSLError : unable to get local issuer certificate (_ssl. c:1076)

ubuntu - 在 Heartbleed 之后切换 SSL 提供商而不是撤销