管理必须与之通信的Docker容器的证书/密钥的最佳方式是什么TLS

问题描述:

我正在将我的应用程序迁移到Docker,而且我不知道如何处理管理证书/密钥。在单个主机中,我有两个Docker容器,它们必须通过TLS监听/通信到多个客户端计算机。在docker之前,我有一个服务器密钥和自签名证书,而且我的客户使用自签名证书与服务器应用程序进行通信。管理必须与之通信的Docker容器的证书/密钥的最佳方式是什么TLS

但现在他们是分开的码头集装箱,什么是正确的方法?我是否将证书/密钥推入容器中的目录?如果是这样,那么我的dockerfile将需要复制证书/密钥,我不希望密钥成为检入图像的一部分。 (安全)

或者,我使用VOLUME并按住主机上的密钥/证书吗?我试过了,但容器root用户看不到私钥,只读主机root用户。

什么是真正做到这一点的正确方法?谢谢

+0

卷的方式是正确的。文件应该是可见的,我已经多次完成此操作。你有没有机会测试boot2docker?在这种情况下,当你装入卷时,你需要在boot2docker vm中拥有源而不是主机。 – 2014-10-15 16:44:20

+0

我没有使用Boot2docker。我将不得不回去玩权限来看看我在做什么,当你这样做的时候,你把主机上的私钥设置为400,并且它能工作吗?嗯, – cybergoof 2014-10-16 18:22:44

花了我一些时间,但我想出了如何做到这一点。

一个RUN命令行,可以将主机目录挂载为数据卷。这在dockerfiles中使用VOLUME不起作用。您可以使用开关-v hostdir:的datavolume

http://docs.docker.com/userguide/dockervolumes/

我用这个连接集装箱数据量存储的密钥和证书的主机目录。

感谢

我知道这是一个老问题,但我想出了一个有点类似,但是更通用的方法。我的解决方案是创建一个data-only容器,它将证书及其密钥安装为/etc/ssl/certs/host//etc/ssl/private/host/。将其命名为例如certificates。在即将推出的容器中,您可以使用--volumes-from certificates轻松使用这些证书。