【发布时间】:2017-08-18 17:17:23
【问题描述】:
我在使用 Docker 和 LetsEncrypt 时遇到了问题。
据我所知,Certbot(在 Apache 或任何 HTTP 服务器上安装 LetsEncrypt 的机器人)检查用户是否拥有与证书关联的域。
所以在 Dockerfile 中,我添加以下行:
RUN certbot --apache -n --agree-tos --email me@mail.com -d domain.tld
问题在于,在进行域检查时,Certbot 将证书安装在 HTTP Server 上,并通过解析域来检查此服务器是否暴露了已安装的证书。
我的意思是,只有在在线 Web 服务器上运行 cerbot 命令时,域检查才能工作。
但是在 Docker 镜像构建过程中没有启动 Apache 服务器。
你有什么办法解决这个问题吗?我可以在容器启动后执行命令,但我想在 Dockerfile 中安装证书。
谢谢
【问题讨论】:
-
为什么不把它推到运行阶段呢?您创建一个入口点脚本并在容器运行时调用这些命令。这是一件更好的事情,因为这样你就可以让它完全可配置
-
好主意!但是每次我重新启动容器时 certbot 都会执行,不是吗?
-
您始终可以通过在生成证书的 certs 文件夹中放置一个附加文件来进行控制
-
除了您遇到的问题,您打算如何更新证书?你真的应该有一个专门的 docker 容器/服务来处理你的证书。请注意,使用letsencrypt进行域所有权验证有不同的策略,并非所有策略都要求您在端口80上公开收听
-
@whites11,我认为证书是由安装了 certbot 的 cron 任务更新的
标签: apache docker lets-encrypt certbot