长亭百川云 - 技术讨论

长亭百川云

技术讨论长亭漏洞情报库IP 威胁情报SLA在线工具
热门产品
雷池 WAF 社区版
IP 威胁情报
网站安全监测
百川漏扫服务
云堡垒机
百川云
技术文档
开发工具
长亭漏洞情报库
网安百科
安全社区
CT STACK 安全社区
雷池社区版
XRAY 扫描工具
长亭科技
长亭科技官网
万众合作伙伴商城
长亭 BBS 论坛
友情链接
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备2024055124号-2

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

发布于 8 个月前

# 雷池 WAF
# SSL 证书
技术资料

发布于 8 个月前

头像

突突突

更新于 8 个月前

1

0

前言

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

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

工具介绍

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

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

项目地址:

github: https://github.com/Wink541/SafelineAPI

个人gitea: https://gitea.doicat.com/duoduo/SafelineAPI

工具使用

1. 下载项目

$ git clone https://github.com/Wink541/SafelineAPI

2. 编译项目

$ 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. 配置文件编辑

{
	"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 ,下列的相关参数为云服务平台账号的凭据。

执行文件

$ ./safelineApi ./config.json    //<可执行文件路径> <配置文件路径>

计划任务(可选)

0 0 1,31 * * root /opt/safelineApi/safelineApi /opt/safelineApi/config.json > /opt/safelineApi/app.log

工具效果

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

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

工具执行部分日志如下:

[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证书 留言,在条件允许的情况下会尽力去实现。

​
头像

远方

更新于 8 个月前

0

0

更新后是否得重启雷池才能生效

头像

突突突

更新于 7 个月前

不需要,直接替换证书的,就跟你修改证书是一样的效果

​
头像

66

更新于 7 个月前

0

0

感谢,一个纯新手在chatgpt的加持下成功部署了

头像

突突突

更新于 6 个月前

遇上什么问题了吗,我看看有什么不足的地方

​
头像

gm

更新于 6 天前

0

0

能否增加cloudflare服务商的验证方式?

​
头像

ToZero

更新于 1 天前

0

0

群辉的域名支持吗

​
头像

-正在输入

更新于 19 小时前

0

0

我使用群晖,部署的acme.sh 更新完证书,使用自动任务 ,把证书覆盖更新到雷池目录 下
每个月复制一次,acme.sh每月更新一次
SOURCE_FILE="/volume1/docker/acme.sh/_ecc/.cer" #acme的证书目录
TARGET_FILE="/volume1/docker/safeline/resources/nginx/certs/cert_2.crt" #这是雷池的证书目录

SOURCE_FILE1="/volume1/docker/acme.sh/**_ecc/*.key" #acme的秘钥目录
TARGET_FILE1="/volume1/docker/safeline/resources/nginx/certs/cert_2.key" #雷池的秘钥目录

if [ ! -f "$SOURCE_FILE" ]; then #检查证书是否存在
echo "错误: 源文件不存在: $SOURCE_FILE"
exit 1
fi

cp -f "$SOURCE_FILE" "$TARGET_FILE" #复制到指定目录
cp -f "$SOURCE_FILE1" "$TARGET_FILE1"

if [ $? -eq 0 ]; then # 检查复制是否成功
echo "$(date): 文件复制成功: $SOURCE_FILE -> $TARGET_FILE"
else
echo "$(date): 文件复制失败"
exit 1
fi

​
头像
相关贴子
#
OIDC功能异常反馈
#
通用配置 中的IP组,究竟是代表白名单还是黑名单?
#
被雷池恶意 IP 情报库拉黑的 IP 如何解封
#
使用雷池社区版,出现luigi服务占用资源飙升情况,如何解决?
#
新增自动人机验证功能