服务无法识别将自签名证书导入Docker的JRE cacert

2019年11月29日 27点热度 0条评论

  • Java服务正在Docker容器中运行,该容器访问外部HTTPS URL,并且服务/ JRE cacert密钥库无法使用其自签名证书,因此连接失败。
  • 因此将HTTPS外部URL的自签名证书导入到Docker容器的JRE cacert密钥库中。 (检查$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