如果我有一个满足以下条件的docker应用程序(J2EE Web应用程序):
鉴于此,如何将证书提供给服务器?
答案 0 :(得分:4)
更新:2018-02
Docker Swarm允许保密。 https://docs.docker.com/engine/swarm/secrets/ 但是,在非Swarm部署中不支持此功能。解决这个问题的一种方法是将部署为1个节点作为Swarm。
上一个回答:
Docker目前还没有办法处理机密(它在路线图上)。在Docker上有一个长期运行的线程。它列出了人们用于将秘密导入容器的许多方法。 https://github.com/docker/docker/issues/13490
有些人使用HashiCorp的保险柜,其他人加密主机上的秘密(env vars)或docker卷(这是我的团队所做的)。容器可以在启动时解密它们(ENTRYPOINT / COMMAND)。要在运行时添加机密,您可以创建一个自定义容器(接受http请求并将其存储在信任库中)。您可以在上面的链接中看到许多建议。
答案 1 :(得分:-1)
应用程序应在内部处理:
如果你有一个在docker容器中运行的java应用程序,你可以使用java密钥库(然后将其他容器pem添加到Dockerfile中的应用程序密钥库)
# import my domaincert
COPY homelinux.org.pem /tmp/homelinux.org.pem
RUN /usr/bin/keytool -import -alias homelinux.org -keystore ${JAVA_HOME}/jre/lib/security/cacerts -trustcacerts -file /tmp/homelinux.org.pem -storepass changeit -noprompt
我在* .homelinux.org上通过dyndns和a有~15个容器
* .homelinux.org自签名域证书(dnsname=*.homelinux.org)
所以容器可以在它们之间使用ssl。