我是 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/