Docker:LetsEncrypt用于开发"无处不在的Https"

时间:2017-01-23 21:05:28

标签: nginx docker lets-encrypt

在开发,测试和登台期间,我们有各种各样的docker服务器作为虚拟机来来往往。最终,此过程中的docker镜像将到达具有明确定义的主机和域名的客户机器。但是,在此之前,所有机器都只是我们的内部网络。在客户部署的环境中,所有人都打算使用http'通过HTTPS进行内部或外部通信。鉴于此意图,非常希望使用可用/可测试的SSL证书连接所有容器。

Onetwothree以及许多docker / letsencrypt / nginx教程中都介绍了如何在最后执行此操作,而不是在开发过程中执行此操作。有谁知道这样的重点设置是否可行?我是否需要使内部最多的docker容器(我们的容纳Tomcat webapp)具有公共域?或者这是完全不切实际的[即使知道这肯定会有很大的帮助!]?如果这种用法成为可能,那么是否有人知道(或有)具体需要做些什么才能实现这一功能呢?

更新

如果从上面不清楚的话。我想发送Docker容器,其中一个可能是letsencrypt / nginx代理。 Docker Hub有很多可供选择。但是,我无法弄清楚如何设置这样的系统进行开发/测试,其中所有机器都在内部网络上。证书可以测试' - 需要允许HTTPS / TLS,而不是Chrome中的绿色锁定!这将允许进行大量测试(即,正确锁定HTTP,关闭TLSv1.0以避免某些漏洞等)。

1 个答案:

答案 0 :(得分:4)

我建议你忘掉Letsencrypt。该服务的价值主张实际上集中在"在浏览器中获得绿色锁定",您明确表示您不需要。

此外,Letsencrypt需要访问您的服务器以验证ACME质询文件是否存在,这意味着是,您需要每个此类服务器都具有可公开访问的域。因此,您需要拥有域并让DNS指向您的特定服务器,这在测试环境中听起来是不受欢迎的。

总而言之,我认为您正在尝试使用错误的工具来满足您的需求。尝试使用常规的自签名证书as described in this question。为此,必须将连接客户端设置为不验证证书。

或者你可以把它提升到一个新的水平create your own CA。要使其工作,您需要使所有容器导入该根证书,以便他们信任它。

当然,一旦您将容器/图像投入生产,请不要忘记撤消这些内容并获得真正有效的证书。当Letsencrypt有用的时候。