小编Nee*_*esh的帖子

将 SSL 证书加载到容器的 JVM

我有一个头盔图表。部署时会创建以下 Kubernetes 资源:

  1. 支持 SSL 的服务
  2. 使用我的 Docker 映像创建的容器,该容器在内部运行与上述服务通信的 Java 进程。
  3. Kubernetes Secrets(SSL 证书和访问密钥),安装在上述容器内。

问题是我的容器无法与我的服务通信,除非我将 SSL 证书添加到 Java 证书中。我通过使用root用户在 docker 中手动运行以下命令来完成此操作。

cd ${JAVA_HOME}/jre/lib/security 

keytool -keystore cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias myservicecert -file /home/myuser/.myservice/certs/public.crt
Run Code Online (Sandbox Code Playgroud)

我想自动化上述步骤,但面临问题:

  • 我无法在 内执行上述步骤,Dockerfile因为当时证书不可用。显而易见。
  • 我无法在entrypoint.shdocker 文件中添加这些步骤,因为入口点文件是由与 root 不同的用户执行的。
  • 我能想到的另一个解决方案是更改路径的权限${JAVA_HOME}/jre/lib/security/cacerts777以便我可以entrypoint.sh毫无问题地运行这些命令。但出于安全原因,我不确定这是否是正确的方法。对此有何建议?
  • 我不想为使用的证书设置自定义位置,Djavax.net.ssl.trustStore因为这样 java 将无法访问根证书。

实现这一目标的正确方法是什么?

java ssl docker kubernetes

4
推荐指数
1
解决办法
6729
查看次数

标签 统计

docker ×1

java ×1

kubernetes ×1

ssl ×1