Docker:LetsEncrypt开发“Https无处不在”

在开发,testing和分期的过程中,我们有各种各样的作为虚拟机来来去去的docker服务器。 最终,在这个过程中的docker图像将会到达具有明确定义的主机和域名的客户机器。 但是,直到那一刻,所有的机器都只是我们的内部networking。 在客户部署的环境中,所有'http'通信都是通过HTTPS进行内部或外部通信。 鉴于这一意图,非常希望将所有容器连接到可用/可testing的SSL证书。

很多docker / letsencrypt / nginx教程的一 , 二 , 三 ,等等,都描述了如何在最后做到这一点,而不是在开发过程中。 有谁知道如果这样一个集中的设置是可能的? 我是否需要制造最内层的docker集装箱(我们恰好安置了一个Tomcat webapp)有一个公共领域? 或者这是完全不切实际的(即使知道这肯定会有很大的帮助! 如果这种用法是可能的,可能有人知道(或具体)需要做些什么来实现这个function?

UPDATE

如果从上面不清楚的话。 我想运送Docker容器,其中一个可能是一个letsencrypt / nginx代理。 Docker Hub上有很多可供select的选项。 但是,我不知道如何设置这样一个系统的开发/testing,所有的机器都在内部networking上。 证书可以是“testing” – 需要允许HTTPS / TLS,而不是Chrome中的绿色locking! 这将允许进行大量的testing(即HTTP正确locking,closuresTLSv1.0以避免某些漏洞等)。

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

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

所以总的来说,我认为你正在尝试使用错误的工具来满足你的需求。 尝试使用此问题中描述的常规自签名证书。 为此,连接客户端必须设置为不验证证书。

或者你可以把它提升到一个新的水平,并创建自己的CA。 为了这个工作,你需要让所有的容器导入这个根证书,这样他们才会信任它。

当然,一旦您将容器/图像投入生产,不要忘记取消这些东西,并获得真正有效的证书。 这就是Letsencrypt的用处。