雷池社区版自动化更新SSL证书(基于DNS验证)

前言

从2023年下半年开始,各大云厂商的免费证书陆续从有效期一年变成了有效期三个月,这对广大的个人用户来讲是一件很不好的事情,因为这样就意味着每三个月就需要重新申请一次证书并部署。

雷池虽然自带了一个通过 Let's Encrypt 来申请证书的功能,但只支持申请时长为3个月的免费证书,但也没有自动续签的功能,所以作者就写了一个用于自动化更新雷池SSL证书的工具。

工具介绍

这款工具使用golang编写(go语言写的多了,就没想过用其他语言了),通过 Let's Encrypt 的 DNS-01 challenge 来进行验证并申请新的证书,替换原有的证书来实现自动更新。

目前DNS验证暂时仅支持:腾讯云阿里云华为云西部数码雨云,如果有小伙伴使用的是其他的域名服务提供商,欢迎在评论区留言,作者会在收到留言后会进行相应的更新。

项目地址:

github: github.com/Wink541/Saf...

个人gitea: gitea.doicat.com/duoduo/Safe...

工具使用

1. 下载项目

shell 复制代码
$ git clone https://github.com/Wink541/SafelineAPI

2. 编译项目

shell 复制代码
$ cd SafelineAPI
$ go build -o safelineApi ./cmd/safelineApi/main.go

// 可根据不同平台来设定不同的编译环境
$ go env -w GOOS=linux    //编译环境修改为linux,可选: linux/windows/darwin
$ go env -w GOARCH=amd64  //编辑架构修改为amd64,可选: amd64/arm64

3. 配置文件编辑

json 复制代码
{
	"SafeLine": {
		"Host": {
			"HostName": "192.168.1.4",
			"Port": "1443"
		},
		"ApiToken": "xxx"
	},
	"ApplyCert": {
		"Days": 30,
		"Email": "xxx",
		"SavePath": "/tmp/ssl",
		"DNSProviderConfig": {
			"DNSProvider": "xxx",
			"TencentCloud": {
				"SecretId": "xxx",
				"SecretKey": "xxx"
			},
			"AliCloud": {
				"AccessKeyId": "xxx",
				"AccessKeySecret": "xxx",
				"RAMRole": "xxx(可选)",
				"STSToken": "xxx(可选)"
			},
			"HuaweiCloud": {
				"AccessKeyId": "xxx",
				"Region": "xxx",
				"SecretAccessKey": "xxx"
			},
			"WestCN": {
				"Username": "xxx",
				"Password": "xxx"
			},
			"RainYun": {
				"ApiKey": "xxx"
			}
		}
	}
}

参数介绍:

  • SafeLine

    • HostName : 雷池管理后台地址。默认为 safeline-mgt 容器IP;
    • Port : 雷池管理后台端口。默认为 1443
    • ApiToken : 雷池接口API Token ,从控制台获取;
  • ApplyCert

    • Days : 过期时间,默认当证书剩余有效期小于该值时,则对证书进行更新;

    • Email : 申请证书时所使用的邮箱;

    • SavePath : 申请证书临时保存位置;

    • DNSProviderConfig : DNS服务提供商配置

      • DNSProvider : 域名服务提供商,可选 TencentCloud/AliCloud/HuaweiCloud/WestCN/RainYun ,下列的相关参数为云服务平台账号的凭据。

执行文件

shell 复制代码
$ ./safelineApi ./config.json    //<可执行文件路径> <配置文件路径>

计划任务(可选)

bash 复制代码
0 0 1,31 * * root /opt/safelineApi/safelineApi /opt/safelineApi/config.json > /opt/safelineApi/app.log

工具效果

工具执行前证书有效期如图:

测试环境,过期时间设定为90天

工具执行部分日志如下:

less 复制代码
[SUCCESS] 2025/04/15 21:36:07 SafeLine 相关配置检验完成!
[INFO]    2025/04/15 21:36:07 ApplyCert 相关配置检验完成!
[INFO]    2025/04/15 21:36:07 配置检查完毕,即将开始更新证书!
[INFO]    2025/04/15 21:36:07 本次需要更新证书数量有 6 个
2025/04/15 21:36:08 [INFO] acme: Registering account for [email protected]
2025/04/15 21:36:09 [INFO] [www.doicat.com] acme: Obtaining bundled SAN certificate
2025/04/15 21:36:10 [INFO] [www.doicat.com] AuthURL: https://acme-v02.api.letsencrypt.org/acme/authz/xxxxxxxxxx/xxxxxxxxxxxx
2025/04/15 21:36:10 [INFO] [www.doicat.com] acme: Could not find solver for: tls-alpn-01
2025/04/15 21:36:10 [INFO] [www.doicat.com] acme: Could not find solver for: http-01
2025/04/15 21:36:10 [INFO] [www.doicat.com] acme: use dns-01 solver
2025/04/15 21:36:10 [INFO] [www.doicat.com] acme: Preparing to solve DNS-01
2025/04/15 21:36:12 [INFO] [www.doicat.com] acme: Trying to solve DNS-01
2025/04/15 21:36:12 [INFO] [www.doicat.com] acme: Checking DNS record propagation. [nameservers=183.60.83.19:53,183.60.82.98:53]
2025/04/15 21:36:14 [INFO] Wait for propagation [timeout: 1m0s, interval: 2s]
2025/04/15 21:36:22 [INFO] [www.doicat.com] The server validated our request
2025/04/15 21:36:22 [INFO] [www.doicat.com] acme: Cleaning DNS-01 challenge
2025/04/15 21:36:24 [INFO] [www.doicat.com] acme: Validations succeeded; requesting certificates
2025/04/15 21:36:27 [INFO] [www.doicat.com] Server responded with a certificate.
[SUCCESS] 2025/04/15 21:36:43 域名 [www.doicat.com] 证书更新成功!

执行后证书更新如下:

结尾

这个简单的项目就到这里了,主要还是为了解决证书更新的问题,文章内容不是很丰富(由于最近学业较繁忙,凭据申请的方法就没有去收集,各位可以上官网查询文档来获取),项目还是有需要完善的地方,有想法的小伙伴可以前往原文 雷池社区版自动化更新SSL证书 留言,在条件允许的情况下会尽力去实现。

相关推荐
bug菌3 小时前
CAP定理真的是死结?业务系统到底该怎么取舍!
分布式·后端·架构
前端付豪5 小时前
微信支付风控系统揭秘:交易评分、实时拦截与行为建模全流程实战
前端·后端·架构
uhakadotcom5 小时前
完了,AI中台比数据中台更短命
面试·架构·github
brzhang6 小时前
我写了个脚本,让AI每天自动看完热榜、写稿、配乐,还用我的声音读出来
前端·后端·架构
Edingbrugh.南空7 小时前
Kafka Connect生产实践:性能优化与高可用架构构建
性能优化·架构·kafka
老兵发新帖7 小时前
Kubernetes架构解析
容器·架构·kubernetes
nbsaas-boot7 小时前
技术选型指南:如何选择更适合项目的开源语言及其生态系统
人工智能·架构
沐森8 小时前
聊聊虚拟dom和fiber
前端·面试·架构
星辰大海的精灵8 小时前
轻松玩转 Kubernetes 集群的工具包
后端·架构·kubernetes