上篇文章说了如何使用 let’s encrypt申请单域名证书,后面也尝试了通配符证书,再次记录一下,后续使用可快速上手
Certbot 可以获取 Let’s Encrypt 的通配符证书(Wildcard Certificate) ,但需要使用 DNS-01 验证方式 (文件验证无法适用通配符)
匹配域名:
-
匹配所有子域名: 例如
*.example.com可以用于blog.example.com、api.example.com、dev.example.com -
不匹配主域名:*.example.com不包含example.com,如果需要主域名,必须单独添加(-d example.com -d *.example.com)
前提条件:
-
必须使用 DNS-01 验证 (通过添加 DNS TXT 记录验证域名所有权)
-
需要 域名提供商支持 API 自动更新 DNS (如 Cloudflare、AWS Route53、Aliyun DNS 等),或者手动添加 TXT 记录
-
Certbot 版本 ≥ 0.22.0 (较新版本支持通配符)
本例子所用版本
-
Certbot: 5.0.5
-
Certbot – dns-aliyun: 2.0.0 (pip3 show certbot-dns-aliyun 命令查看)
手动配置DNS步骤:
手动添加DNS适合于域名和你要解析的云厂商不一样的情况。
1、获取通配符证书命令,如下:
#通配符不匹配主域名,因此ywabcd.cn要单独使用-d来申请证书certbot certonly --manual --preferred-challenges dns -d "ywabcd.cn" -d "*.ywabcd.cn"
会提示需要去域名控制台添加TXT的解析记录。

登录域名控制台,添加记录。

解析需要几分钟才能生效,此时先不要回车下一步,以免没检测到生效导致失败,此时通过命令先检测下解析是否成功,如果成功了在继续执行证书步骤,如下:
dig +short TXT _acme-challenge.ywdevops.cn @8.8.8.8

已经生效,此时在Press Enter to Continue位置点击回车进行下一步,获取到证书。

将证书配置到Nginx后,查看网站证书信息 , 已经是Let’s Encrypt。

查看获取的证书中是否包含多个域名,可以使用如下命令:
openssl x509 -in fullchain1.pem -noout -text | grep -A1 "Subject Alternative Name"

自动DNS解析步骤
使 用 Certbot 的 DNS 插件(推荐,自动更新 DNS) ,这里演示使用阿里云DNS插件,安装插件,如下:
pip3 install certbot certbot-dns-aliyun //安装certbot和插件certbot plugins //验证插件

-
登录阿里云账户,创建RAM用户
-
创建 AccessKey ID 和 AccessKey Secret ,保存好
-
给 用户授予
AliyunDNSFullAccess策略

3、 在服务器上创建配置文件
/etc/letsencrypt/aliyun.ini,如下:
touch /etc/letsencrypt/aliyun.inichmod 600 aliyun.ini #权限控制在600
添加配置内容到aliyun.ini中,如下:
dns_aliyun_access_key = LTAI5tAoMeLxFa5boBcjWJsdns_aliyun_access_key_secret = MP9CGqB98zaHN0t0BOpW9G2cMhfBAw
4、 使用命令获取证书 , 如下:
certbot certonly--authenticator dns-aliyun--dns-aliyun-credentials /etc/letsencrypt/aliyun.ini--dns-aliyun-propagation-seconds 60-d "*.example.com"-d example.com--non-interactive--agree-tos
登录阿里云,可以看到已经自动添加了DNS解析。

再等一会就可以看到终端提示证书签发成功。
注: 要获取证书的域名要跟aliyun.ini中配置AccessKeyID和AccessKeySecret所对应的阿里云账号在一起才能使用自动DNS解析














暂无评论内容