跳转至

证书管理 (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 服务器”。
  • 解决方案
    1. 改用 DNS 验证 (acme.sh):这是唯一靠谱的方案。它通过修改域名解析记录来验证所有权,不需要端口映射,也不受 ISP 限制。
    2. 不要用 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。如果不填,某些老旧安卓手机会提示证书不可信。

4. 证书分配 (Assign Certificate) —— 最容易忽略的一步!

很多人申请了证书,却发现浏览器还是报红。这是因为你没有把证书分配给对应的服务

  • 操作
    • 控制面板 > 安全性 > 证书 > 设置
    • 你会看到一个服务列表(System default, FTPS, Drive, LDAP Server...)。
    • 关键:默认情况下,它们都使用“自签名证书”。你需要把它们改成你刚申请的 Let's Encrypt 证书。
    • 建议:把所有服务都改成你的新证书。
    • 注意:如果你有多个证书(比如一个 synology.me,一个 yourdomain.com),请确保:
      • 系统默认 (System Default):用最常用的那个(通常是 yourdomain.com)。
      • Drive Server:必须与你在 Drive 客户端填写的域名一致,否则同步会失败。

反向代理证书逻辑 (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.pemprivkey.pem,即可开启 DoH/DoT。
    • 路由器:上传到 OpenWrt/Merlin 做管理页面 HTTPS。

7. 常见错误排查

  • 错误:“无法连接到 Let's Encrypt 服务器”。
    • 原因:Let's Encrypt 验证需要你的 NAS 80 端口能被公网访问。
    • 解决:检查路由器端口转发,确保外网 80 -> NAS 80 通畅。如果运营商封了 80 端口,你只能用 DNS 验证法(acme.sh)。
  • 错误:证书已更新,但浏览器还是显示旧证书。
    • 原因:Web Server 没重启。
    • 解决:通常 DSM 会自动重启 Nginx。如果不行,重启 NAS。或者清除浏览器缓存。