Joe*_*oeG 5 nginx docker lets-encrypt
在开发、测试和暂存期间,我们有各种 docker 服务器作为虚拟机来来去去。最终,此过程下的 docker 映像将到达具有明确定义的主机和域名的客户机器。然而,在那之前所有的机器都只是我们的内部网络。在客户部署的环境中,所有“http”通信无论是内部还是外部都是通过 HTTPS 进行的。鉴于此意图,非常希望将所有容器与可用/可测试的 SSL 证书连接起来。
许多 docker/letsencrypt/nginx 教程中的一、二、三等都在最后描述了如何执行此操作,但不在开发过程中。有谁知道这种集中设置是否可行?我是否需要让最里面的 docker 容器(我们的恰好包含一个 Tomcat webapp)拥有一个公共域?或者这完全不切实际[即使知道这一点也会有很大帮助!]?如果这种用法是可能的,是否有人知道(或拥有)有关需要做什么才能实现此功能的细节?
更新
以防上面的内容不清楚。我想运送 Docker 容器,其中一个可能是 letencrypt/nginx 代理。Docker Hub上有很多可供选择。但是,我无法弄清楚如何设置这样一个系统进行开发/测试,其中所有机器都在内部网络上。证书可以是“测试”——需要的是允许 HTTPS/TLS,而不是 Chrome 中的绿色锁!这将允许进行大量测试(即正确锁定 HTTP,关闭 TLSv1.0 以避免某些漏洞等)。
我建议你忘记 Letscrypt。该服务的价值主张实际上集中在“在浏览器中获得绿色锁”,而您明确表示不需要。
此外,Letsencrypt 需要访问您的服务器以验证 ACME 质询文件是否存在,这意味着是的,您需要每个此类服务器都有一个可公开访问的域。因此,您需要拥有该域并让 DNS 指向您的特定服务器,这在测试环境中听起来是不可取的。
总而言之,我认为您正在尝试使用错误的工具来满足您的需求。尝试使用此问题中所述的常规自签名证书。为此,必须将连接客户端设置为不验证证书。
或者您可以将其提升到一个新的水平并创建您自己的 CA。为此,您需要让所有容器导入该根证书,以便它们信任它。
当然,一旦您将容器/映像投入生产,请不要忘记撤消这些操作并获取真正有效的证书。这时候 Letscrypt 就会派上用场了。