我是 Docker 的新手,正在尝试学习它。我在 Windows 7 上使用 Docker Quickstart Terminal。我有一个简单的要求,我在 Docker 容器中使用 Tomcat。我的 DockerFile 如下:
FROM tomcat:8.0.47-jre7
RUN cd /usr/local/tomcat/webapps
COPY test.war /usr/local/tomcat/webapps/test.war
然后我在 Docker 控制台中发出简单的构建和运行命令。
test.war 是一个 Java 网络服务。此 Web 服务使用 HTTPS 在内部调用远程主机上的其他 Web 服务。我有远程主机的证书。
我尝试了互联网上可用的几种方法来将这些证书导入或复制到不同论坛/博客上提到的不同位置,但没有成功。每当我使用 HTTPS 从 test.war 调用外部网络服务时,它都会给我 SSL 握手错误。
我还有一个 Java 密钥库。我也尝试在我的 Docker 文件中使用 Java,并尝试使用密钥库,但再次失败。
当我在直接安装在我机器上的 tomcat 上使用相同的 test.war 时,它工作得非常好。
有人可以通过提供在这种情况下能够导入/使用 SSL 证书/密钥库的步骤来帮助我吗?另外,如何导入多个证书?
原文由 Gagan Singh 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以尝试将证书导入到 docker 中的 jvm 可信存储中。
您可以使用这些证书,但实际上您不需要它们,您只需要颁发证书的机构的根证书。您可以从互联网上下载它。
通常它们以
pem
格式给出,但你需要der
用于 jvm。首先你需要转换证书:
然后将其安装到 jvm 密钥库中:
此命令询问您是否真的要添加证书,您应该键入“是”。
一起放在
Dockerfile
中:注意:如果您已经拥有
der
格式的证书,则不需要openssl
调用,直接复制证书即可。要验证证书是否真正应用,您可以运行容器,ssh 进入它
并检查密钥库: