证书管理 (Certificate Manager) 深度指南:告别“不安全”
每次打开 DSM,浏览器都弹个“不安全”的大红叉?这是因为你没有合法的 SSL 证书。证书管理是保障数据传输安全的第一道防线。
1. 证书类型与逻辑
- 自签名证书 (Self-signed):
- 生成者:DSM 系统自己生成的。
- 信任:只有这台 NAS 信任自己,世界上所有浏览器都不信任。
- 缺点:浏览器每次都报警,且无法使用某些需要严格 HTTPS 的功能(如 Drive 同步、手机端 App 备份)。
- Let's Encrypt (免费):
- 生成者:Let's Encrypt CA 机构。
- 信任:全球 99.9% 的浏览器都信任。
- 缺点:有效期 90 天(需自动续期),且申请时需要公网验证。
- 商业证书 (收费):
- 生成者:DigiCert, GeoTrust 等。
- 信任:全球信任,且通常有保险。
2. 申请 Let's Encrypt 证书 (Synology DDNS)
这是最简单的方法,适合拥有 Synology DDNS (*.synology.me) 的用户。
- 路径:控制面板 > 安全性 > 证书 > 新增。
- 选择:获取证书 > 设为默认证书 > 从 Let's Encrypt 获取证书。
- 域名:
yourname.synology.me。 - 电子邮件:填真实的,用来收过期通知。
- 主题备用名称 (SAN):
- 如果只申请这一个域名,可以留空。
- 关键:如果你想用
file.yourname.synology.me,你需要在这里填上。但 Synology DDNS 不支持通配符证书(即*.yourname.synology.me),你必须把每一个用到的二级域名都列出来,用分号隔开。
80 端口陷阱 (Port 80 Trap)
这是 90% 用户申请/续期失败的原因。
- 原理:Let's Encrypt 官方使用的是 HTTP-01 验证方式。它会尝试访问
http://yourname.synology.me/.well-known/acme-challenge/xxx。 - 限制:这要求你的 NAS 80 端口必须暴露在公网。
- 现实:绝大多数家用宽带(ISP)都封锁了 80 端口。
- 结果:申请时一直转圈,最后报错“无法连接到 Let's Encrypt 服务器”。
- 解决方案:
- 改用 DNS 验证 (acme.sh):这是唯一靠谱的方案。它通过修改域名解析记录来验证所有权,不需要端口映射,也不受 ISP 限制。
- 不要用 DSM 自带的申请功能:除非你有公网 IP 且 ISP 没封 80 端口。
3. 申请泛域名证书 (Wildcard Certificate)
这是终极解决方案。只要拥有一个 *.yourdomain.com 证书,所有子域名都能用,而且不用每次都去填 SAN。
- 方法一:acme.sh (强烈推荐):
- 详见 acme.sh 泛域名证书自动化。
- 原理:利用 Docker 或 SSH 运行脚本,通过 DNS API 验证域名所有权,自动申请并部署到 DSM。
- 优势:支持自动续期,无需人工干预。
- 方法二:导入已有证书:
- 如果你在阿里云/腾讯云申请了免费证书,下载 Nginx 格式的证书包(包含
.key和.pem)。 - 控制面板 > 安全性 > 证书 > 新增 > 导入证书。
- 私钥 (Private Key):
.key文件。 - 证书 (Certificate):
.pem或.crt文件。 - 中间证书 (Intermediate Certificate): 通常包含在
.pem里,或者是单独的一个.crt。如果不填,某些老旧安卓手机会提示证书不可信。
- 如果你在阿里云/腾讯云申请了免费证书,下载 Nginx 格式的证书包(包含
4. 证书分配 (Assign Certificate) —— 最容易忽略的一步!
很多人申请了证书,却发现浏览器还是报红。这是因为你没有把证书分配给对应的服务。
- 操作:
- 控制面板 > 安全性 > 证书 > 设置。
- 你会看到一个服务列表(System default, FTPS, Drive, LDAP Server...)。
- 关键:默认情况下,它们都使用“自签名证书”。你需要把它们改成你刚申请的
Let's Encrypt证书。 - 建议:把所有服务都改成你的新证书。
- 注意:如果你有多个证书(比如一个
synology.me,一个yourdomain.com),请确保:- 系统默认 (System Default):用最常用的那个(通常是
yourdomain.com)。 - Drive Server:必须与你在 Drive 客户端填写的域名一致,否则同步会失败。
- 系统默认 (System Default):用最常用的那个(通常是
反向代理证书逻辑 (Reverse Proxy)
如果你使用 Docker 部署了 emby, plex, vaultwarden 等服务,并通过反向代理访问:
- 证书在哪里生效?:在 NAS 的 Nginx 上。
- Docker 容器内部需要证书吗?:不需要。容器内部跑 HTTP 即可。
- 流程:浏览器 (HTTPS) -> NAS 反向代理 (解密) -> (HTTP) -> Docker 容器。
- 配置:在证书分配列表中,找到你创建的反向代理规则(例如
vaultwarden.yourdomain.com),把它的证书选为对应的泛域名证书即可。
5. HSTS (强制 HTTPS)
- 原理:告诉浏览器“以后访问这个网站,只许用 HTTPS,不许用 HTTP”。
- 设置:控制面板 > 登录门户 > DSM > 勾选 HSTS。
- 警告:一旦开启,如果你的证书过期了或者配置错了,浏览器会直接拒绝连接,连“继续访问”的按钮都没有。请确保你的证书自动续期正常再开启。
6. 证书导出与备份
有时候你需要把证书给其他设备用(比如路由器、AdGuard Home)。
- 操作:右键证书 > 导出证书。
- 内容:你会得到一个
archive.zip,解压后包含:privkey.pem: 私钥。cert.pem: 证书。chain.pem: 中间证书。
- 用途:
- AdGuard Home:在加密设置中上传
cert.pem和privkey.pem,即可开启 DoH/DoT。 - 路由器:上传到 OpenWrt/Merlin 做管理页面 HTTPS。
- AdGuard Home:在加密设置中上传
7. 常见错误排查
- 错误:“无法连接到 Let's Encrypt 服务器”。
- 原因:Let's Encrypt 验证需要你的 NAS 80 端口能被公网访问。
- 解决:检查路由器端口转发,确保外网 80 -> NAS 80 通畅。如果运营商封了 80 端口,你只能用 DNS 验证法(acme.sh)。
- 错误:证书已更新,但浏览器还是显示旧证书。
- 原因:Web Server 没重启。
- 解决:通常 DSM 会自动重启 Nginx。如果不行,重启 NAS。或者清除浏览器缓存。