群晖DSM 7.x SSL证书自动化部署教程
前言
群晖 Quickconnect 的访问速度确实慢,很多人宁愿自己买个VPS做内网穿透。但暴露在外网的NAS需要HTTPS支持,否则浏览器总提示”不安全”,看着就烦。
记得刚开始折腾NAS时,我被SSL证书搞得挺崩溃。好不容易搭好服务,结果浏览器弹出红色警告,还是自签名证书。

如果你先前试过各种方法,要么太复杂,要么不稳定的童鞋可以试试 syno-ssl-auto 这个脚本,从配置到部署大概10分钟搞定。
这个脚本的特点:
- 自动申请、部署、续期证书
- 支持 Cloudflare、HE.NET 等多个DNS服务商
- 每3天检查一次续期,不用担心过期
- 交互式菜单操作
- DSM升级后可以一键修复环境
部署教程
前期准备
开始前需要准备:
必备条件:
- 面向 Synology DSM 7.x 系统(仅在 Synology DSM 7.x 系统通过测试,低版本不要尝试)
- 已有域名并解析到NAS公网IP
- DNS服务商账号(Cloudflare或HE.NET)
- NAS能访问外网
启用SSH服务:
# 1. 进入群晖 DSM 控制面板# 2. 找到「终端机和 SNMP」# 3. 勾选「启用SSH服务」# 4. 建议修改默认端口22配置文件
下载并配置脚本是关键一步。
第1步: 克隆项目
打开SSH终端:
# 切换到root用户sudo -i
# 进入root目录,或其他目标路径cd ~
# 克隆项目git clone https://github.com/moewah/syno-ssl-auto.git
# 进入项目目录cd syno-ssl-auto第2步: 编辑配置文件
nano ssl.conf修改关键配置:
# 接收证书通知的邮箱export ACME_ACCOUNT_EMAIL="your_email@qq.com"
# DNS 服务配置,以 HE.NET 为例export CERT_DNS="dns_he"export HE_Username="你的HE.NET账号"export HE_Password="你的HE.NET密码"
# Cloudflare配置示例# export CERT_DNS="dns_cf"# export CF_Token="你的Cloudflare API Token"# export CF_Email="你的Cloudflare邮箱"
# DSM域名(不要带http://)export CERT_DOMAIN="nas.yourdomain.com"
# DSM管理员账号密码export SYNO_USERNAME='admin'export SYNO_PASSWORD='你的DSM密码'注意:
- 密码用单引号包裹,避免特殊字符问题
CERT_DOMAIN不要包含http://或https://- 确保DNS API Token有正确权限
第3步: 保存配置文件
在nano编辑器中:
Ctrl + O保存,Enter确认Ctrl + X退出
脚本运行
配置完成后可以开始部署。
第1步: 赋予执行权限
chmod +x install_synology_ssl.sh第2步: 运行主脚本
bash install_synology_ssl.sh会看到菜单:
==================================== Synology DSM SSL 证书管理工具====================================1. 自动部署证书2. 启用自动升级3. 关闭自动升级4. 修复损坏环境5. 强制更新证书6. 退出====================================第3步: 首次部署
第一次使用选择 1. 自动部署证书
脚本会自动:
- 下载并安装 acme.sh
- 通过DNS验证申请证书
- 部署证书到DSM
- 配置自动续期任务
整个过程约3-5分钟。
第4步: 验证证书
访问你的NAS域名:
- 地址栏应该显示锁形图标
- 点击可查看证书有效期
部署成功的标志:
- 浏览器显示”连接是安全的”
- 证书颁发机构为”Let’s Encrypt”
- 有效期90天
- 可以正常访问DSM
自动续期任务:
脚本会添加cron任务,每3天凌晨2点检查续期:
0 2 */3 * * root /usr/local/share/acme.sh/acme.sh --cron --home /usr/local/share/acme.shLet’s Encrypt证书有效期90天,脚本每3天检查一次,出问题也有时间修复。
环境修复
如果你已经通过该脚本成功部署过SSL证书,那么进行 Synology DSM 系统升级后请运行选项 4. 修复损坏环境 ,修复系统升级导致的环境变量重置问题。
之前遇到一次DSM升级后证书续期失败,排查半天发现是环境变量被重置了。
修复方法:
cd /volume1/syno-ssl-autosudo -ibash install_synology_ssl.sh# 选择 4. 修复损坏环境修复脚本会:
- 重新加载配置文件
- 恢复环境变量
- 验证acme.sh环境
- 测试证书续期
修复后建议手动测试:
# 选择 5. 强制更新证书测试DSM大版本升级后(如7.1到7.2),建议第一时间运行”修复损坏环境”,避免证书突然过期。
常见问题
证书申请失败,提示DNS验证错误
可能原因: 1)DNS配置不正确;2)域名未解析到NAS公网IP;3)DNS API Token权限不足
解决方案:
# 检查域名解析ping nas.yourdomain.com
# 检查DNS配置cat ssl.conf
# 确认DNS API Token权限# Cloudflare Token需要: Zone - DNS - Edit# HE.NET需要账号密码证书部署成功但浏览器提示不安全
可能原因: 1)证书未正确加载到DSM;2)访问域名与证书域名不匹配;3)浏览器缓存旧证书
解决方案:
# 检查证书部署# DSM 控制面板 > 安全性 > 证书
# 清除浏览器缓存# Chrome: Ctrl+Shift+Delete (Win) / Cmd+Shift+Delete (Mac)
# 强制更新证书cd /volume1/syno-ssl-autobash install_synology_ssl.sh# 选择 5. 强制更新证书自动续期不工作
排查:
# 检查cron任务cat /etc/crontab | grep acme
# 检查acme.sh状态/usr/local/share/acme.sh/acme.sh --home /usr/local/share/acme.sh --list
# 手动测试续期/usr/local/share/acme.sh/acme.sh --home /usr/local/share/acme.sh --cron --force解决:
# 重新运行脚本cd /volume1/syno-ssl-autobash install_synology_ssl.sh# 选择 2. 启用自动升级
# 检查crond服务synosystemctl restart crondDSM升级后证书失效
修复:
cd /volume1/syno-ssl-autosudo -ibash install_synology_ssl.sh# 选择 4. 修复损坏环境# 然后选择 5. 强制更新证书查看证书续期日志
# 查看acme.sh日志/usr/local/share/acme.sh/acme.sh --home /usr/local/share/acme.sh --list
# 查看证书详情/usr/local/share/acme.sh/acme.sh --home /usr/local/share/acme.sh --list --listraw
# 查看cron日志grep "acme.sh" /var/log/messages | tail -n 50出现 code:60 错误,无法建立 SSL 连接
若证书服务器使用的是 letsencrypt,如果出现 code:60 错误,无法建立 SSL 连接,请升级群辉内置 CA 机构根证书,请以 root 用户执行以下命令:
# 备份根证书mv /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt.bak
# 更新根证书curl -Lko /etc/ssl/certs/ca-certificates.crt https://curl.se/ca/cacert.pem浏览器 SSL 证书兼容性相关问题
兼容性相关问题可通过 https://ssl-config.mozilla.org/ 在线工具,依据服务器环境生成 SSL 配置文件来获得更好的证书兼容性。
总结
配置SSL证书看似麻烦,但用这个脚本后确实省心。
核心要点:
- 准备充分 - 域名、DNS、SSH权限
- 配置准确 -
ssl.conf仔细填写 - 首次部署 - 选择”自动部署证书”
- 自动续期 - 每3天检查,90天有效期
- 升级修复 - DSM升级后运行选项4
搞定SSL证书后,NAS使用体验确实提升不少。不用每次访问都盯着地址栏看了。
开始使用:
- SSH登录NAS
- 按教程操作
- 等待HTTPS锁形图标出现
参考资源:
推荐文章
基于标签匹配 · 智能推荐支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
喵斯基部落