为「远程访问」群晖 DS218+ 添加 HTTPS 支持
群晖折腾系列,第 3 篇:为远程访问添加 HTTPS 支持。前两篇回顾:开箱、加内存。
虽然,Chrome 说未来将不再为 HTTPS 添加绿色的安全两个字,但强迫症不能忍现在的不安全三个字啊。
嗯,先来看一下正经的 HTTPS 是什么样子的:
比起不安全,是不是有一种瞬间高大上感觉?
那么问题来了:
如何为「远程访问」的群晖 DS218+ 添加 HTTPS 支持呢?
情况有点复杂,本来 DSM 里面有专门的功能,可以通过免费的 Let’s Encrypt 证书来完成 HTTPS 的支持,但是由于国内的运营商普遍封锁了 80 端口,于是这个功能不可用。
所以我们需要使用别的方法。
这样还要分两种情况:
- 如果你有一枚真.域名,能开启 HTTPS 支持
.com、.me、.net 随意什么域名,就可以实现 HTTPS 了。
- 如果你没有域名,不能开启 HTTPS 支持
买一个,或者用群晖自带的 xxx.synology.me 配合 Let’s Encrypt 证书使用。但无法开启 HTTPS 支持,因为那个域名不是你的,无法通过验证
▍设置使用 xxx.synology.me 来访问你的群晖
先来说如何设置使用 synology.me 吧,毕竟这个是零成本最简单的方法了,可惜的是不支持 HTTPS。 并且同样支持 HTTPS。
在 控制面板 中的 外部访问 中,有一个 DDNS 功能,在服务提供商里,有非常多的第三方动态域名服务,Synology 是群晖提供的 DDNS 服务,居然提供了非常多的个性域名可以选择,所以挑一个顺眼的吧。
注意只能添加一个 Synology 的服务,这里以 synology.me 为例。
然后在输入主机名称,就是 xxx.synology.me 里面的 xxx 了,然后勾选同意服务条款,确定就完成了,非常简单。
以后,你就可以在世界任何地点使用任何网络通过 xxx.synology.me:5000(由于 80 口被封,无法自动跳转,需要手动添加 :5000)访问你的群晖了。
不过还是要注意一下,你需要在路由器设置页面上开启 5000 端口的映射,这个部分需要注意的是 IP 地址填入群晖的局域网地址,源端口与目标端口都填入 5000 就好了。
(可以同时将 5001 也映射了,HTTPS 需要用到)
创建 synology.me 证书
感谢 @Waydeen 提醒,群晖整合了自动创建 synology.me 证书,对于没有域名的同学来说,这个方案首选。
在 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:
点击 NEXT 后会弹出一个问题:“Include www-prefixed version too?”,这是在问要不要生成 www 前缀的证书,我们不需要,点 No 就行了。
稍等片刻,ZeroSSL 会生成 CSR,记得下载或者复制保存好,再第一次 NEXT,会生成 账号密钥(非证书密钥),保存下来(未来续签证书会用到),然后第三次点击 NEXT。
正常情况下会要求你进行 DNS 域名验证,你需要添加一个 TXT 记录,这里默认你会,如果你不会…
点击 NEXT 后,如果看到这个:
恭喜证书完成。赶紧把下面的 crt.txt 和 key.txt 下载回来,这个用得到。
(如果提示 CAA 错误,尝试给你的域名添加 CAA 记录,Let’s Encrypt 的 CAA 为 letsencrypt.org)
在 ZeroSSL 的任务就完成了,我们返回 DSM。
设置证书
在 DSM 的控制面板 > 安全性 > 证书中,可以添加新证书:
中间证书在这里下载。
这还没完,需要继续
最后,在 控制面板 > 网络 > DMS 设置中,打开以下两个功能:
终于完成了。
看着绿色的 HTTPS 是不是心里美滋滋?
最后提醒:由于 Let’s Encrypt 的证书有效期只有 3 个月,而 80 口被封导致无法自动续签,所以 3 个月到期前还需要前往 ZeroSSL 网站进行重复续签操作,还记得上面提到的保留的 CRS 和 账号密钥 么?直接填入 NEXT 就好了。
至此,就可以在远程网络下使用自己的 HTTPS 域名访问群晖啦。
(教程完)
青小蛙在写这篇教程的时候是边操作边记录,所以肯定会有一些遗漏,如果你在实践过程中碰到问题,可以留言提问。