欢迎光临 Rick 's BLOG
日志首页  | C# .Net编程  | 原创作品  | 生活点滴  | C\C++相关  | 多媒体相关※ERMP  | VB相关  | 其它运维与编程  |  留言簿
CentOS7、8转换使用Oracle的yum仓库 crontab 定时格式
未知  Certbot 使用aliyun dns插件发行泛域名ssl证书并自动续期
[ 发布日期:1周前 (01-06) ]   [ 来自:本站原创 ] [分类:其它运维与编程]

原理


当我们使用 certbot 申请通配符证书时,需要手动添加 TXT 记录。每个 certbot 申请的证书有效期为 3 个月,虽然 certbot 提供了自动续期命令,但是当我们把自动续期命令配置为定时任务时,我们无法手动添加新的 TXT 记录用于 certbot 验证。

好在 certbot 提供了一个 hook,可以编写一个 Shell 脚本。在续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录,验证完成后再删除此记录。

安装命令行工具


1,安装 aliyun cli 工具


官方工具安全无忧。
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
tar xzf aliyun-cli-linux-latest-amd64.tgz
sudo cp aliyun /usr/local/bin

安装完成后需要【配置凭证信息】:
# Configure Aliyun CLI
aliyun configure set --profile akProfile --mode AK --region $REGION --access-key-id $ACCESS_KEY_ID --access-key-secret $ACCESS_KEY_SECRET

$REGION 是阿里云的服务器区域:cn-qingdao cn-beijing cn-hongkong 等。
更多请参考官网:https://help.aliyun.com/zh/ecs/regions-and-zones

$ACCESS_KEY_ID 和 $ACCESS_KEY_SECRET 需要在阿里云控制台申请。
详情可以参考官网:https://help.aliyun.com/zh/cli/configure-credentials

注意:要设置权限。实际是授权RAM用户管理云解析,所以授权时选择 AliyunDNSFullAccess 而不是AliyunDomainFullAccess。

2,安装 certbot-dns-aliyun Hook脚本插件


shell脚本,安全透明。
wget https://cdn.jsdelivr.net/gh/justjavac/certbot-dns-aliyun@main/alidns.sh
sudo cp alidns.sh /usr/local/bin/alidns
sudo chmod +x /usr/local/bin/alidns

因为是从第三方下载的脚本,下载后请审查脚本内容。脚本内容比较简单,审查很容易。

3,申请泛域名证书


测试是否能正确申请:
certbot certonly -d *.rickw.cn -d rickw.cn --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run

如果aliyun权限问题,注意设置权限 AliyunDNSFullAccess

正式申请时去掉 --dry-run 参数:
certbot certonly -d *.rickw.cn -d rickw.cn --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean"


4,证书续期


certbot renew --dry-run

测试运行正常后去掉参数 --dry-run 即可。
续期时不需要再指定其它参数,在申请证书时的参数都已经保存。续期时会自动读取参数。

5,自动续期


CentOS8 安装的来自epel仓库的certbot 1.22版本,已经自动安装了系统定时事件。
可以通过下面命令查看是否有certbot相关的定时事件。
systemctl list-timers


另外在第三步正式申请时如果看到如下信息,也表示有自动定时事件。
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/rickw.cn/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/rickw.cn/privkey.pem
This certificate expires on 2025-04-06.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.


如果没有的话,可以手动添加定时任务。
可以参考之前的文章【CentOS + Nginx 如何自动申请部署Let's Encrypt免费SSL证书】

如果文章对您有帮助,给个赞赏吧!
引用通告地址 (0):
复制引用地址https://www.rickw.cn/trackback/349
复制引用地址https://www.rickw.cn/trackback/349/GBK
[本日志由 rick 于 1周前 (01-06) 编辑]
[ 分类:其它运维与编程  | 查看:56 ]

暂时没有评论,快来发表一个评论吧。
发表评论
作者:   用户:[访客] 
评论:

表  情
禁止表情 | 禁止UBB | 禁止图片 | 识别链接
对不起,你没有权限上传附件!
验证:
 
PoweredBy R-Blog V1.00 © 2004-2025 WWW.RICKW.CN, Processed in second(s) , 7 queries    京ICP备17058477号-5