
certbot/dns-route53本镜像为EFF(Electronic Frontier Foundation)官方构建的Certbot Docker镜像,集成了Amazon Route 53 DNS挑战插件。Certbot是一款自动化工具,用于从Let's Encrypt等证书颁发机构获取和续期TLS/SSL证书,而本镜像通过集成Route 53插件,支持通过DNS-01挑战验证域名所有权,实现证书的自动管理。
*.example.com)申请证书AmazonRoute53FullAccess或自定义策略仅允许修改TXT记录)AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY)bashdocker run -it --rm \ -e AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY" \ -e AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_KEY" \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/log/letsencrypt:/var/log/letsencrypt \ certbot/dns-route53:v1.7.0 \ certonly \ --dns-route53 \ --agree-tos \ --email *** \ --domains example.com,*.example.com \ --non-interactive
若本地已存在AWS凭证文件(通常位于~/.aws/credentials),可直接挂载:
bashdocker run -it --rm \ -v ~/.aws/credentials:/root/.aws/credentials:ro \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/log/letsencrypt:/var/log/letsencrypt \ certbot/dns-route53:v1.7.0 \ certonly \ --dns-route53 \ --agree-tos \ --email *** \ --domains example.com \ --non-interactive
-it --rm:交互式运行并在退出后删除容器-e:设置环境变量(AWS凭证)-v /etc/letsencrypt:/etc/letsencrypt:挂载证书存储目录(持久化证书文件)-v /var/log/letsencrypt:/var/log/letsencrypt:挂载日志目录certbot/dns-route53:v1.7.0:镜像名称及版本certonly:仅获取证书(不自动配置Web服务器)--dns-route53:启用Route 53 DNS插件--agree-tos:同意Let's Encrypt服务条款--email:管理员***(用于证书过期通知)--domains:目标域名(支持多个域名,用逗号分隔)--non-interactive:非交互式运行(适合自动化脚本)创建docker-compose.yml文件:
yamlversion: '3' services: certbot-route53: image: certbot/dns-route53:v1.7.0 environment: - AWS_ACCESS_KEY_ID=YOUR_AWS_ACCESS_KEY - AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_KEY volumes: - /etc/letsencrypt:/etc/letsencrypt - /var/log/letsencrypt:/var/log/letsencrypt command: > certonly --dns-route53 --agree-tos --email *** --domains example.com,*.example.com --non-interactive
启动容器:
bashdocker-compose up
Certbot命令支持以下核心参数(结合--dns-route53插件使用):
| 参数 | 说明 |
|---|---|
certonly | 仅获取证书(不自动配置Web服务器) |
--dns-route53 | 启用Route 53 DNS插件,自动完成DNS-01挑战 |
--agree-tos | 自动同意Let's Encrypt服务条款 |
--email <EMAIL> | 管理员***(必填,用于证书过期通知及账户恢复) |
--domains <DOMAINS> | 目标域名(多个域名用逗号分隔,支持通配符,如*.example.com) |
--non-interactive | 非交互式运行(适合脚本自动化,无需手动确认) |
--renew-by-default | 强制续期证书(即使未过期) |
--dry-run | 测试模式(模拟获取证书,不实际生成证书,用于验证配置) |
| 环境变量 | 说明 |
|---|---|
AWS_ACCESS_KEY_ID | AWS IAM用户访问密钥ID(用于验证Route 53权限) |
AWS_SECRET_ACCESS_KEY | AWS IAM用户密钥(与AWS_ACCESS_KEY_ID配对) |
AWS_DEFAULT_REGION | AWS区域(可选,默认us-east-1,Route 53为全局服务,通常无需修改) |
| 环境变量 | 说明 |
|---|---|
CERTBOT_HOME | Certbot工作目录(默认/etc/letsencrypt,建议通过-v挂载持久化) |
LOG_LEVEL | 日志级别(可选:DEBUG/INFO/WARNING/ERROR,默认INFO) |
AWS IAM权限最小化:建议为IAM用户配置最小权限,仅允许修改Route 53的TXT记录(避免过度授权)。示例自定义策略:
json{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "route53:ListHostedZones", "route53:ChangeResourceRecordSets" ], "Resource": [ "arn:aws:route53:::hostedzone/*" ] } ] }
证书续期:Let's Encrypt证书有效期为90天,建议通过cron或Docker Compose定时任务自动续期,示例续期命令:
bashdocker run -it --rm \ -e AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY" \ -e AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_KEY" \ -v /etc/letsencrypt:/etc/letsencrypt \ -v /var/log/letsencrypt:/var/log/letsencrypt \ certbot/dns-route53:v1.7.0 \ renew --dns-route53 --non-interactive
凭证安全:避免将AWS密钥直接写入Docker命令或Compose文件,建议通过文件挂载(如~/.aws/credentials)或Docker Secrets(生产环境推荐)管理凭证。
镜像版本锁定:生产环境建议锁定镜像版本(如v1.7.0),避免自动升级导致兼容性问题。




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务