Tired of manually renewing your SSL certificates every 90 days?
Cloud providers have reduced the validity of their free SSL certs from 1 year to just 3 months. While SafeLine WAF supports Let’s Encrypt out of the box, it lacks automatic renewal. That’s where this automation tool comes in — saving you time and reducing downtime.
🔧 What This Tool Does
This Go-based utility automatically renews your SafeLine SSL certificates using Let’s Encrypt’s DNS-01 challenge. It supports several major DNS providers out of the box:
- Tencent Cloud
- Aliyun (Alibaba Cloud)
- Huawei Cloud
- West.cn
- Rainyun
Don’t see your DNS provider? Leave a comment on the GitHub repo — the author is open to adding more.
GitHub: https://github.com/Wink541/SafelineAPI
Mirror (Gitea): https://gitea.doicat.com/duoduo/SafelineAPI
🚀 Getting Started
1. Clone the Repo
git clone https://github.com/Wink541/SafelineAPI
cd SafelineAPI
2. Build the Binary
go build -o safelineApi ./cmd/safelineApi/main.go
# Optional: cross-compile for your platform
go env -w GOOS=linux # Options: linux / windows / darwin
go env -w GOARCH=amd64 # Options: amd64 / arm64
3. Edit Config File
Create a config.json
with the following structure:
{
"SafeLine": {
"Host": {
"HostName": "192.168.1.4",
"Port": "1443"
},
"ApiToken": "your-safeline-token"
},
"ApplyCert": {
"Days": 30,
"Email": "[email protected]",
"SavePath": "/tmp/ssl",
"DNSProviderConfig": {
"DNSProvider": "TencentCloud",
"TencentCloud": {
"SecretId": "your-id",
"SecretKey": "your-key"
},
"AliCloud": {
"AccessKeyId": "your-id",
"AccessKeySecret": "your-secret"
},
"HuaweiCloud": {
"AccessKeyId": "your-id",
"Region": "cn-east-2",
"SecretAccessKey": "your-key"
},
"WestCN": {
"Username": "your-username",
"Password": "your-password"
},
"RainYun": {
"ApiKey": "your-api-key"
}
}
}
}
4. Run the Tool
./safelineApi ./config.json
5. (Optional) Add a Cron Job
To automate renewal every month:
0 0 1,31 * * root /opt/safelineApi/safelineApi /opt/safelineApi/config.json > /opt/safelineApi/app.log
🧪 Example Output
Before execution:
Certificates close to expiry (under 90 days)
Log output after running the tool:
[SUCCESS] 2025/04/15 21:36:07 SafeLine config validated!
[INFO] 2025/04/15 21:36:08 Starting certificate renewal...
[INFO] 2025/04/15 21:36:10 Using DNS-01 challenge for domain [www.doicat.com]
[INFO] 2025/04/15 21:36:14 DNS record propagation successful
[SUCCESS] 2025/04/15 21:36:43 Certificate for [www.doicat.com] updated!
After execution:
Certificates renewed successfully ✅
✍️ Final Thoughts
This simple Go tool solves a real-world pain: automating SSL renewals for SafeLine WAF. If you’re tired of getting those “certificate expired” warnings, this tool’s for you.
The project is still evolving — feel free to contribute or suggest improvements on GitHub!