- 一个 Java 服务在 Docker 容器内运行,它访问外部 HTTPS url,并且它的自签名证书对服务/JRE cacert keystore 不可用,因此连接失败。
- 因此将 HTTPS 外部 URL 的自签名证书导入到 Docker 容器的 JRE cacert keystore 中。 (检查
$JAVA_HOME
环境变量后) - 重新启动 Docker 容器(使用
docker restart
命令),希望服务也重新启动并从 JRE cacert 中选择更改。但这并没有发生,Java 服务仍然无法访问外部 HTTPS URL。
知道在 Docker 容器内运行的 Java 服务如何选择 JRE cacert 随着新证书导入的变化?
最佳答案
Hence imported the self-signed certificate of HTTPS external URL into Docker container's JRE cacert keystore.
否:您需要将其导入运行容器的 Docker 镜像。
将其导入容器只会创建 temporary writable data layer ,当您重新启动容器时将被丢弃。
类似于 this answer :
USER root
COPY ldap.cer $JAVA_HOME/jre/lib/security
RUN \
cd $JAVA_HOME/jre/lib/security \
&& keytool -keystore cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias ldapcert -file ldap.cer
关于java - 将自签名证书导入 Docker 的 JRE cacert 服务无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41497871/