为「远程访问」群晖 DS218+ 添加 HTTPS 支持

群晖折腾系列,第 3 篇:为远程访问添加 HTTPS 支持。前两篇回顾:开箱加内存

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 1

虽然,Chrome 说未来将不再为 HTTPS 添加绿色的安全两个字,但强迫症不能忍现在的不安全三个字啊。

嗯,先来看一下正经的 HTTPS 是什么样子的:

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 2

比起不安全,是不是有一种瞬间高大上感觉?

那么问题来了:

如何为「远程访问」的群晖 DS218+ 添加 HTTPS 支持呢?

情况有点复杂,本来 DSM 里面有专门的功能,可以通过免费的 Let’s Encrypt 证书来完成 HTTPS 的支持,但是由于国内的运营商普遍封锁了 80 端口,于是这个功能不可用。

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 3

所以我们需要使用别的方法。

这样还要分两种情况:

  • 如果你有一枚真.域名,能开启 HTTPS 支持

.com、.me、.net 随意什么域名,就可以实现 HTTPS 了。

  • 如果你没有域名,不能开启 HTTPS 支持

买一个,或者用群晖自带的 xxx.synology.me 配合 Let’s Encrypt 证书使用。但无法开启 HTTPS 支持,因为那个域名不是你的,无法通过验证

设置使用 xxx.synology.me 来访问你的群晖

先来说如何设置使用 synology.me 吧,毕竟这个是零成本最简单的方法了,可惜的是不支持 HTTPS 并且同样支持 HTTPS。为「远程访问」群晖 DS218+ 添加 HTTPS 支持 4

在 控制面板 中的 外部访问 中,有一个 DDNS 功能,在服务提供商里,有非常多的第三方动态域名服务,Synology 是群晖提供的 DDNS 服务,居然提供了非常多的个性域名可以选择,所以挑一个顺眼的吧。

注意只能添加一个 Synology 的服务,这里以 synology.me 为例。

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 5

然后在输入主机名称,就是 xxx.synology.me 里面的 xxx 了,然后勾选同意服务条款,确定就完成了,非常简单。

以后,你就可以在世界任何地点使用任何网络通过 xxx.synology.me:5000(由于 80 口被封,无法自动跳转,需要手动添加 :5000)访问你的群晖了。

不过还是要注意一下,你需要在路由器设置页面上开启 5000 端口的映射,这个部分需要注意的是 IP 地址填入群晖的局域网地址,源端口与目标端口都填入 5000 就好了。

(可以同时将 5001 也映射了,HTTPS 需要用到)

创建 synology.me 证书

感谢 @Waydeen 提醒,群晖整合了自动创建 synology.me 证书,对于没有域名的同学来说,这个方案首选

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 6

在 3 域名处,输入你的 xxx.synology.me,然后选择一个邮箱,备选留空,点击下一步就完成了,无需验证域名。

利用 synology.me 实现自有域名的 DDNS 功能

由于 xxx.synology.me 已经实现了自动更新公网 IP 功能,所以我们只需要将自己的域名设置一个 CNAME 记录指向 xxx.synology.me 就行了,无需设置第三方 DDNS 服务。

用真域名、真证书,使用 HTTPS 来远程访问你的群晖资源

假设你已经有了域名,并且会设置域名解析,然后开始下面的步骤。

免费获取 Let’s Encrypt  证书

一般情况下,使用 Let’s Encrypt 需要命令行来操作,青小蛙是比较反感面向普通用户使用命令行的,于是找来了网页工具 ZeroSSL,一站式解决生成密钥、请求文件、证书生成全套流程,你只需要进行一下域名验证即可。

备注:对于直接使用 ZeroSSL 生成私钥不放心的同学,可以自己生成私钥,这里不再讨论。

打开 ZeroSSL 后,填入邮箱、要使用的域名,勾选 DNS verification,勾选两个 Accept:

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 7

点击 NEXT 后会弹出一个问题:“Include www-prefixed version too?”,这是在问要不要生成 www 前缀的证书,我们不需要,点 No 就行了。

稍等片刻,ZeroSSL 会生成 CSR,记得下载或者复制保存好,再第一次 NEXT,会生成 账号密钥(非证书密钥),保存下来(未来续签证书会用到),然后第三次点击 NEXT。

正常情况下会要求你进行 DNS 域名验证,你需要添加一个 TXT 记录,这里默认你会,如果你不会…

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 8

点击 NEXT 后,如果看到这个:

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 9

恭喜证书完成。赶紧把下面的 crt.txt 和 key.txt 下载回来,这个用得到。

(如果提示 CAA 错误,尝试给你的域名添加 CAA 记录,Let’s Encrypt 的 CAA 为 letsencrypt.org)

在 ZeroSSL 的任务就完成了,我们返回 DSM。

设置证书

在 DSM 的控制面板 > 安全性 > 证书中,可以添加新证书:

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 10

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 11

中间证书在这里下载

这还没完,需要继续 😂

最后,在 控制面板 > 网络 > DMS 设置中,打开以下两个功能:

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 12

终于完成了。

看着绿色的 HTTPS 是不是心里美滋滋?

为「远程访问」群晖 DS218+ 添加 HTTPS 支持 13

最后提醒:由于 Let’s Encrypt 的证书有效期只有 3 个月,而 80 口被封导致无法自动续签,所以 3 个月到期前还需要前往 ZeroSSL 网站进行重复续签操作,还记得上面提到的保留的 CRS 和 账号密钥 么?直接填入 NEXT 就好了。

至此,就可以在远程网络下使用自己的 HTTPS 域名访问群晖啦。

(教程完)

青小蛙在写这篇教程的时候是边操作边记录,所以肯定会有一些遗漏,如果你在实践过程中碰到问题,可以留言提问。

38 条留言

  1. 楚轩大人 2018/06/11 回复
  2. Waydeen 2018/06/11 回复
  3. 小猫偷菊 2018/06/11 回复
    • Nchyn 2018/06/11 回复
  4. watermoon 2018/06/11 回复
    • Nchyn 2018/06/11 回复
  5. iwkoo 2018/06/11 回复
  6. Sharuru 2018/06/11 回复
    • 青小蛙 2018/06/11 回复
      • Sharuru 2018/06/15 回复
  7. Ling 2018/06/11 回复
  8. jason 2018/06/11 回复
  9. Nicky 2018/06/12 回复
  10. 不良菌 2018/06/16 回复
  11. Q_Q 2018/06/19 回复
  12. Sum 2018/06/24 回复
  13. ttaa 2018/06/25 回复
  14. awyme 2018/06/27 回复
  15. Never 2018/09/13 回复
    • 周惠 2018/10/13 回复
  16. faning 2019/02/16 回复
    • 青小蛙 2019/02/17 回复
      • faning 2019/02/22 回复
  17. 白衣 2019/09/02 回复
  18. 网络小白 2019/09/02 回复
    • 青小蛙 2019/09/03 回复
  19. Alex 2019/10/27 回复
    • 青小蛙 2019/10/28 回复
  20. DP 2021/04/15 回复

写留言