内容提要
本文介绍了使用CertBot自动更新EMQX Broker证书的简单项目。首先创建CertBot容器申请主机证书,成功后创建EMQX容器使用该证书。CertBot每12小时检查证书有效期,如果证书文件被修改,EMQX容器将重新启动。文章提供了代码示例和必要的配置步骤。
延伸解读
证书自动续期机制
CertBot 容器每 12 小时检查一次证书有效期,并在证书文件被修改时触发 EMQX 容器重启。这一机制通过共享卷 certs 实现:CertBot 将新证书写入卷,EMQX 的启动脚本使用 inotifywait 监控证书文件变化,检测到修改后自动重启 EMQX 以加载新证书。
部署前提与配置
部署前需在 .env 文件中设置 DOMAIN 和 EMAIL 变量,分别用于申请证书的域名和联系邮箱。同时,必须确保主机的 80 端口开放,以便 Let's Encrypt 进行域名验证。此外,需为 update-certs-and-setup.sh 脚本添加可执行权限,否则容器可能无法正常启动。
运行与日志检查
使用 docker compose up -d --build 命令构建并启动服务。之后可通过 docker logs --details certbot 查看 CertBot 日志,确认证书申请和续期状态;通过 docker logs --details emqx 查看 EMQX 日志,确认 Broker 是否成功启动。这有助于快速排查证书或服务启动问题。
Q&A
如何使用CertBot自动更新EMQX Broker的证书?
首先创建CertBot容器申请证书,成功后创建EMQX容器使用该证书。CertBot每12小时检查证书有效期,若证书被修改,EMQX容器将重新启动。
在使用CertBot时需要配置哪些环境变量?
需要在.env文件中配置域名和邮箱地址,例如DOMAIN和EMAIL。
如何检查CertBot和EMQX的日志?
可以使用命令docker logs --details certbot查看CertBot的日志,使用docker logs --details emqx查看EMQX的日志。
为什么需要确保80端口开放?
80端口需要开放以便Let’s Encrypt验证域名,确保证书申请成功。
如何构建并运行使用CertBot的项目?
使用命令docker compose up -d --build来构建并运行项目。
CertBot如何监控证书的有效性?
CertBot每12小时检查证书的有效期,并在证书文件被修改时重新启动EMQX容器。