我有一个证书,正在尝试将证书设置为“javax.net.ssl.keyStore”。
System.setProperty("javax.net.ssl.keyStore", "certs/certfile.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "密码");
//(完全限定路径类似于 src/main/resources/certs/certfile.p12 )
当我在本地运行时,这些属性工作正常,但在 docker conatiner 中,问题是,certs/certfile.p12 中没有这样的文件或目录。
我需要将该 certfile.p12 添加到 JAR 中的 javax.net.ssl.keyStore 中。 也接受替代解决方案。
注意:完全限定路径在 JAR 中不起作用。
提前致谢。
最佳答案
(尝试)将配置保持在镜像外部是一个很好的做法。除了这提供的明显灵 active (一个镜像具有多种可能的配置)之外,这还提供了一些安全性,因为配置(例如证书)是在外部管理的(并且可能是安全的)。
您有 2 个选择:
- 在创建|运行容器时将
certfile.p12
安装到卷中:
docker run \
.... \
--volume=path/to/local/certfile.p12:/path/to/image/certfile.p12 \
...
- 不建议(请参阅序言),您应在镜像中包含
certfile.p12
。这需要您创建一个新镜像(需要 Dockerfile):
FROM original-image
...
ADD /path/to/local/certfile.p12 /path/to/image/certfile.p12
...
您的配置还需要设置密码
。从图像中具体化这个值也是一个很好的做法。实现此目的的一种方法是使用必须从 Java 应用程序中获取的环境变量。您可以设置变量:
docker run \
...
---env=PASSWORD=password
...
关于java - Docker id 未选择文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58343887/