1674 字
8 分钟

群晖DSM 7.x SSL证书自动化部署教程

前言#

群晖 Quickconnect 的访问速度确实慢,很多人宁愿自己买个VPS做内网穿透。但暴露在外网的NAS需要HTTPS支持,否则浏览器总提示”不安全”,看着就烦。

记得刚开始折腾NAS时,我被SSL证书搞得挺崩溃。好不容易搭好服务,结果浏览器弹出红色警告,还是自签名证书。

Synology-SSL.png

如果你先前试过各种方法,要么太复杂,要么不稳定的童鞋可以试试 syno-ssl-auto 这个脚本,从配置到部署大概10分钟搞定。

这个脚本的特点:

  • 自动申请、部署、续期证书
  • 支持 Cloudflare、HE.NET 等多个DNS服务商
  • 每3天检查一次续期,不用担心过期
  • 交互式菜单操作
  • DSM升级后可以一键修复环境

部署教程#

前期准备#

开始前需要准备:

必备条件:

  1. 面向 Synology DSM 7.x 系统(仅在 Synology DSM 7.x 系统通过测试,低版本不要尝试)
  2. 已有域名并解析到NAS公网IP
  3. DNS服务商账号(Cloudflare或HE.NET)
  4. NAS能访问外网

启用SSH服务:

Terminal window
# 1. 进入群晖 DSM 控制面板
# 2. 找到「终端机和 SNMP」
# 3. 勾选「启用SSH服务」
# 4. 建议修改默认端口22

配置文件#

下载并配置脚本是关键一步。

第1步: 克隆项目

打开SSH终端:

Terminal window
# 切换到root用户
sudo -i
# 进入root目录,或其他目标路径
cd ~
# 克隆项目
git clone https://github.com/moewah/syno-ssl-auto.git
# 进入项目目录
cd syno-ssl-auto

第2步: 编辑配置文件

Terminal window
nano ssl.conf

修改关键配置:

Terminal window
# 接收证书通知的邮箱
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步: 赋予执行权限

Terminal window
chmod +x install_synology_ssl.sh

第2步: 运行主脚本

Terminal window
bash install_synology_ssl.sh

会看到菜单:

====================================
Synology DSM SSL 证书管理工具
====================================
1. 自动部署证书
2. 启用自动升级
3. 关闭自动升级
4. 修复损坏环境
5. 强制更新证书
6. 退出
====================================

第3步: 首次部署

第一次使用选择 1. 自动部署证书

脚本会自动:

  1. 下载并安装 acme.sh
  2. 通过DNS验证申请证书
  3. 部署证书到DSM
  4. 配置自动续期任务

整个过程约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.sh

Let’s Encrypt证书有效期90天,脚本每3天检查一次,出问题也有时间修复。

环境修复#

如果你已经通过该脚本成功部署过SSL证书,那么进行 Synology DSM 系统升级后请运行选项 4. 修复损坏环境 ,修复系统升级导致的环境变量重置问题。

之前遇到一次DSM升级后证书续期失败,排查半天发现是环境变量被重置了。

修复方法:

Terminal window
cd /volume1/syno-ssl-auto
sudo -i
bash install_synology_ssl.sh
# 选择 4. 修复损坏环境

修复脚本会:

  1. 重新加载配置文件
  2. 恢复环境变量
  3. 验证acme.sh环境
  4. 测试证书续期

修复后建议手动测试:

Terminal window
# 选择 5. 强制更新证书测试

DSM大版本升级后(如7.1到7.2),建议第一时间运行”修复损坏环境”,避免证书突然过期。

常见问题#

证书申请失败,提示DNS验证错误#

可能原因: 1)DNS配置不正确;2)域名未解析到NAS公网IP;3)DNS API Token权限不足

解决方案:

Terminal window
# 检查域名解析
ping nas.yourdomain.com
# 检查DNS配置
cat ssl.conf
# 确认DNS API Token权限
# Cloudflare Token需要: Zone - DNS - Edit
# HE.NET需要账号密码

证书部署成功但浏览器提示不安全#

可能原因: 1)证书未正确加载到DSM;2)访问域名与证书域名不匹配;3)浏览器缓存旧证书

解决方案:

Terminal window
# 检查证书部署
# DSM 控制面板 > 安全性 > 证书
# 清除浏览器缓存
# Chrome: Ctrl+Shift+Delete (Win) / Cmd+Shift+Delete (Mac)
# 强制更新证书
cd /volume1/syno-ssl-auto
bash install_synology_ssl.sh
# 选择 5. 强制更新证书

自动续期不工作#

排查:

Terminal window
# 检查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

解决:

Terminal window
# 重新运行脚本
cd /volume1/syno-ssl-auto
bash install_synology_ssl.sh
# 选择 2. 启用自动升级
# 检查crond服务
synosystemctl restart crond

DSM升级后证书失效

修复:

Terminal window
cd /volume1/syno-ssl-auto
sudo -i
bash install_synology_ssl.sh
# 选择 4. 修复损坏环境
# 然后选择 5. 强制更新证书

查看证书续期日志#

Terminal window
# 查看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 连接#

若证书服务器使用的是 letsen­crypt,如果出现 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证书看似麻烦,但用这个脚本后确实省心。

核心要点:

  1. 准备充分 - 域名、DNS、SSH权限
  2. 配置准确 - ssl.conf 仔细填写
  3. 首次部署 - 选择”自动部署证书”
  4. 自动续期 - 每3天检查,90天有效期
  5. 升级修复 - DSM升级后运行选项4

搞定SSL证书后,NAS使用体验确实提升不少。不用每次访问都盯着地址栏看了。

开始使用:

  1. SSH登录NAS
  2. 按教程操作
  3. 等待HTTPS锁形图标出现

参考资源:

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
群晖DSM 7.x SSL证书自动化部署教程
https://blog.moewah.com/posts/1301/
作者
GoWah
发布于
2025-04-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
GoWah
Hello, I'm GoWah.
分类
标签
站点统计
文章
160
分类
9
标签
350
总字数
301,106
运行时长
0
最后活动
0 天前

目录