🚀 群晖泛域名证书管理工具
从零开始完整部署教程 · 全自动续期 · 微信通知
✨ 功能特点
自动续期
每天检查,到期前自动续期
微信通知
续期成功实时推送
群晖集成
自动部署到DSM系统
安全可靠
遵循Let’s Encrypt限制
1. 准备工作
📌 群晖要求
✅ SSH服务已开启
控制面板 → 终端机和SNMP → 启动SSH
✅ 管理员权限
admin账户或sudo权限
✅ 公网域名
如 example.com
🔑 获取阿里云API密钥
- 登录阿里云控制台:RAM访问控制
- 创建RAM用户(或使用已有用户)
- 添加权限:
AliyunDNSFullAccess - 创建AccessKey,保存好:
AccessKey ID: LTAI5tKyZ4vBnGwDXJ7s5
AccessKey Secret: pEvtVnsq9MhnXZsdKhrSSdbmeK
💬 注册Server酱(微信通知)
- 访问:https://sct.ftqq.com/
- 使用GitHub账号登录
- 点击”点我发送消息”,复制您的 SendKey
SCT317533TOPmSzW9VST0ahqwViOmMKMr4
2. SSH登录群晖
# 在电脑上打开终端(Windows用PowerShell或Putty)
ssh admin@你的群晖IP
# 输入密码登录后
sudo -i # 切换到root权限
root@群晖主机名:~#
3. 安装基础环境
# 创建必要的目录
mkdir -p /volume1/docker/acme
mkdir -p /volume1/docker/certs
mkdir -p /volume1/docker/acme/config
cd /volume1/docker/acme
# 安装 acme.sh
curl https://get.acme.sh | sh -s email=你的邮箱@example.com
# 创建符号链接
ln -s /usr/local/share/acme.sh /root/.acme.sh
# 设置默认CA为Let’s Encrypt
/usr/local/share/acme.sh/acme.sh –set-default-ca –server letsencrypt
进度 30%
4. 部署证书管理脚本
4.1 创建脚本文件
vi /volume1/docker/acme/cert_manager.sh
4.2 复制脚本内容
⚠️ 注意: 脚本内容较长,请从教程末尾的完整脚本代码部分复制。
按 i 进入编辑模式,粘贴后按 ESC,输入 :wq 保存退出。
4.3 设置执行权限
chmod +x /volume1/docker/acme/cert_manager.sh
4.4 测试运行
bash /volume1/docker/acme/cert_manager.sh –help
✅ 成功标志: 显示彩色帮助信息
进度 50%
5. 首次运行配置
5.1 运行脚本
bash /volume1/docker/acme/cert_manager.sh
5.2 配置阿里云API密钥
1. 选择菜单 1
2. 输入您的 AccessKey ID
3. 输入您的 AccessKey Secret
4. 确认信息正确
5.3 添加域名
1. 选择菜单 2 → 1
2. 输入主域名:你的域名.com(如 spnas.com)
3. 输入泛域名:*.你的域名.com(如 *.spnas.com)
4. 输入备注(可选)
5.4 查看域名列表
| 序号 | 主域名 | 泛域名 | 备注 |
|---|---|---|---|
| 1 | spnas.com | *.spnas.com | 主要域名 |
6. 测试证书申请
6.1 使用Debug模式测试
# 输入域名序号(如 1)
Debug模式会显示:
- ✅ API密钥是否正确
- ✅ DNS解析是否正常
- ✅ 域名验证是否通过
6.2 申请正式证书
✅ 成功标志:
- “证书申请成功” 提示
- 证书已保存到
/volume1/docker/certs/你的域名/
6.3 查看证书状态
| 序号 | 域名 | 状态 | 剩余天数 | 过期时间 |
|---|---|---|---|---|
| 1 | spnas.com | ✅已导出 | 88 | May 29 2026 |
进度 70%
7. 配置微信通知
7.1 进入群晖部署设置
| 选项 | 功能 |
|---|---|
| 1 | 查看部署钩子状态 |
| 2 | 启用/创建部署钩子 |
| 3 | 测试部署钩子 |
| 4 | 查看部署日志 |
| 5 | 清空部署日志 |
| 6 | 配置微信通知 SendKey |
| 7 | 查看当前 SendKey |
| 8 | 测试微信通知 |
| 9 | 查看微信通知日志 |
7.2 配置SendKey
1. 选择 6
2. 输入您的Server酱 SendKey
3. 确认保存
7.3 测试微信通知
1. 选择 8
2. 查看微信是否收到测试消息
✅ 成功标志: 微信收到测试通知
7.4 创建部署钩子
1. 选择 2 创建群晖自动部署脚本
2. 选择 3 测试部署功能
8. 设置自动续期
8.1 添加定时任务
# 编辑crontab
crontab -e
# 添加以下行(每天凌晨3点执行)
0 3 * * * /bin/bash /volume1/docker/acme/cert_manager.sh –renew >/dev/null 2>&1
8.2 验证定时任务
# 查看已添加的定时任务
crontab -l
📌 续期策略:
- 每天检查一次证书有效期
- 剩余天数 < 60天时自动续期
- 遵循Let’s Encrypt频率限制
- 续期成功自动发微信通知
进度 90%
9. 在群晖中使用证书
9.1 导入证书到群晖
打开群晖DSM
控制面板
安全性 → 证书
新增 → 导入证书
9.2 填写证书信息
| 字段 | 填写内容 |
|---|---|
| 描述 | Let’s Encrypt |
| 私钥 | /volume1/docker/certs/你的域名/你的域名.key |
| 证书 | /volume1/docker/certs/你的域名/fullchain.cer |
| 中间证书 | 留空 |
9.3 设置为默认证书
- 在证书列表中选中刚导入的证书
- 点击 配置
- 将主要服务都设置为使用这个证书
✅ 完成! 以后续期会自动部署,无需手动操作
10. 常用命令速查
| 用途 | 命令 |
|---|---|
| 进入交互菜单 | bash /volume1/docker/acme/cert_manager.sh |
| 快速查看状态 | bash /volume1/docker/acme/cert_manager.sh --status |
| 手动续期 | bash /volume1/docker/acme/cert_manager.sh --renew |
| 查看帮助 | bash /volume1/docker/acme/cert_manager.sh --help |
| 测试部署 | bash /volume1/docker/acme/syno-deploy-hook.sh |
| 测试微信 | bash /volume1/docker/acme/wechat-notify.sh |
| 查看部署日志 | tail -f /volume1/docker/acme/syno-deploy.log |
| 查看微信日志 | tail -f /volume1/docker/acme/wechat-notify.log |
| 编辑定时任务 | crontab -e |
| 查看定时任务 | crontab -l |
文件结构
├── cert_manager.sh # 主脚本
├── domains.conf # 域名配置文件
├── syno-deploy-hook.sh # 群晖部署钩子
├── wechat-notify.sh # 微信通知脚本
├── config/
│ └── wechat.conf # SendKey配置
├── syno-deploy.log # 部署日志
├── wechat-notify.log # 微信日志
├── cert-manager.log # 主脚本日志
└── renew.log # 续期日志
/volume1/docker/certs/
└── 你的域名.com/ # 域名目录
├── fullchain.cer # 证书文件
└── 你的域名.com.key # 私钥文件
🔗 快速链接
11. 常见问题解决
Q1: 证书申请失败,显示 “InvalidAccessKeyId”
A1: API密钥错误,重新运行菜单1配置正确的密钥
Q2: 证书申请失败,显示 “Domain verification failed”
A2:
- 确认域名已正确解析到群晖IP
- 等待DNS生效(最多10分钟)
- 用Debug模式查看详细错误
Q3: 微信收不到测试通知
A3:
- 确认SendKey配置正确(菜单6 → 7查看)
- 检查网络:
curl https://sctapi.ftqq.com/你的SendKey.send - 查看日志:
cat /volume1/docker/acme/wechat-notify.log
Q4: 部署钩子测试失败
A4:
- 确认证书目录存在:
ls -la /volume1/docker/certs/ - 查看详细日志:
cat /volume1/docker/acme/syno-deploy.log - 手动运行:
bash /volume1/docker/acme/syno-deploy-hook.sh
Q5: 脚本显示乱码
A5:
export NO_COLOR=true
bash /volume1/docker/acme/cert_manager.sh
Q6: 如何查看当前证书剩余天数?
A6:
# 方法2:命令行快速查看
bash /volume1/docker/acme/cert_manager.sh –status
🎉 恭喜!配置完成!进度 100%
发表回复