22 三月, 2024

thumbnail

使用lego自动续期SSL证书

前言

最近几天阿里云的SSL证书到期了,想着更新一把。打开阿里域名后台一看,免费SSL证书的有效时间已经从以前的1年变成3个月了,真是绷不住了。。。那不如搞个免费证书自动续期,然后在互联网上找到了lego这个工具,看了一下用起来还挺简单的。群主之前也提供了一个,不过是手动的(https://www.ecoo.top/ssl.html),里面也有自动脚本,但貌似需要木弟子,不是很方便。

安装lego

参考链接:https://www.jianshu.com/p/7a1f41b74955

下载软件

获取DNS API参数(自动续期需要用,如果手动请忽略)

根据 阿里云 DNS 代理配置说明 得知需要去阿里云申请 API 授权,得到参数
登陆阿里云控制台 https://homenew.console.aliyun.com/
访问控制 > 用户 > 新建用户
登陆名: dns
显示名: dns
访问方式: openapi
创建后,添加权限: AliyunDNSFullAccess
最终得到 AccessKey ID、AccessKeySecret

获取证书

在/opt/lego目录下运行命令即可生成,证书在/opt/lego/.lego/certificates/
(第一次运行时会用邮箱进行注册)

# --path 为配置和证书生成目录,如果不指定默认为 `./.lego`  # --email 注册邮箱  # --domains 受保护的域名(建议通配符)  # --dns 为 DNS 服务器 Code  ./lego --path="/opt/lego/.lego" --email="[email protected]" --domains="*.baudu.top" --domains="baudu.top" --dns="alidns" run

此时你已经获取到证书了,已经可以把它配置到nginx上面,但需要定期更新

自动续期

此处需要用到前面获取的openapi参数,新建脚本,并写入以下内容:
vi autorenew.sh

#!/bin/sh  # ALICLOUD_ACCESS_KEY、ALICLOUD_SECRET_KEY 设置为对应的 API 参数  # renew --days=n 提前n天获取证书  # --renew-hook 证书获取成功后,执行的命令内容,一般是reload nginx    ALICLOUD_ACCESS_KEY=获取的AccessKey ID \  ALICLOUD_SECRET_KEY=获取的AccessKeySecret \  /opt/lego/lego --path="/opt/lego/.lego" --email="[email protected]" --domains="*.baudu.top" --domains="baudu.top" --dns="alidns" renew --days=30 --renew-hook="nginx -s reload" >> autorenew.log

脚本创建后,赋予权限,可以先执行一把,看看有没有问题,然后将其添加到定时任务中。
0 5 * * * /opt/lego/autorenew.sh
到此,自动续期已完成,脚本会提前30天更新证书。






欢迎投稿(技术分享、原创教程)至本站机器人: blog#mige.eu.org
 

Subscribe by Email

Follow Updates Articles from This Blog via Email

No Comments

About

搜索此博客