雷池社区版自动化更新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 admin@example.com
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证书 留言,在条件允许的情况下会尽力去实现。

相关推荐
only-qi1 小时前
微服务场景下,如何实现分布式事务来保证一致性?
分布式·微服务·架构
乾元2 小时前
实战案例:解析某次真实的“AI vs. AI”攻防演练
运维·人工智能·安全·web安全·机器学习·架构
全栈游侠3 小时前
STM32F103XX 01-存储器和总线架构
stm32·嵌入式硬件·架构
Ivanqhz3 小时前
现代异构高性能计算(HPC)集群节点架构
开发语言·人工智能·后端·算法·架构·云计算·边缘计算
DisonTangor4 小时前
智谱开源基于GLM-V编码器-解码器架构的多模态OCR模型——GLM-OCR
架构·开源·ocr
范纹杉想快点毕业4 小时前
嵌入式系统架构之道:告别“意大利面条”,拥抱状态机与事件驱动
java·开发语言·c++·嵌入式硬件·算法·架构·mfc
Guheyunyi5 小时前
电气安全管理系统:筑牢现代用电安全的智能防线
大数据·人工智能·科技·安全·架构·能源
迎仔5 小时前
06-Spark 进阶指南:架构原理与 Alluxio 加速
大数据·架构·spark
power 雀儿5 小时前
Transformer 整体架构
深度学习·架构·transformer
麦兜*6 小时前
深入剖析云原生Service Mesh数据平面Envoy核心架构:基于xDS协议与WebAssembly实现动态流量管理与安全策略的微服务治理实战指南
云原生·架构·service_mesh