群晖折腾系列,第 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 域名访问群晖啦。
(教程完)
青小蛙在写这篇教程的时候是边操作边记录,所以肯定会有一些遗漏,如果你在实践过程中碰到问题,可以留言提问。
哎哟,终于弄到沙发了
synology.me同样可以申请Let’s Encrypt免费证书,在DSM控制面板里添加证书,选Let’s Encrypt就行了,自动验证的,而且自动续期
感谢提醒,已更新文章
但是直接申请需要80端口啊~
LE用在NAS还是麻烦,3个月实在太短,我现在是TX的免费证书,解析在CF
https://ws1.sinaimg.cn/large/b8bcb959gy1fs73vc5tq2j228016ke81.jpg
扭头一看这个页面没被绿,顺着找下来是你的图片http啊
家里的宽带被电信封锁了80、8080、443等端口,证书的自动验证是通不过了,请问小青蛙有什么办法呢?
腾讯吧,提供免费TrustAsia证书,用DNS验证就好
今天看微博,上面说群晖的硬盘老出状况啊
那是硬盘问题吧….
我的群晖 DDNS 解析不出来,有 IP 解析出来但是连不上。
端口映射了么
你要确定是解析不出来,还是解析出来连不上哦,这是两个问题
后来查了下是路由器固件版本太老了,端口映射有 BUG,升级到新版本后解决了。
现在用群晖 Docker 跑个 Cloudflare 的 DDNS 服务,挂上证书,惬意的很~ 🙂
用的FreeSSL,没有出现账号密钥这个东西啊,难道是ZeroSSL专有的么?
https://www.appinn.com/ds218plus-https/
话说访问这个链接都说“并非完全安全”。哈哈,这个你能忍?
啊 忍了。居然是评论里的图片没 https….真是防不胜防
我的锅我的锅
哈哈哈哈哈哈哈
顺便问下,问下不把feed也加个SSL?
有的 https://feeds.appinn.com/appinns/
我的路由器是华硕AC68,自带DDNS,我准备把自己的域名CNAME上DDNS的域名上,然后再试试。端口的话直接路由转发
添加了外网访问的https,那我单纯在家里内网时如何访问?如果https过期了,内网又上不去,那不就杯具了?
群晖Note Station也很好用呢,感觉比Wiz好用;
下一步就是 APC SmartUPS SUA1000
https://post.smzdm.com/p/714957
今天测试成功了。好奇的是外网可以了,但的是app怎么连?
app 就连你的外网地址啊
然而我买的是qnap,2333。
自带的服务都不快,反正我选择了用我的tx hk vps 做frp转发。
qnap里自己弄了个docker镜像,一键搞定。
我按这个设置完了 但是还是显示不安全是怎么回事….
一样的,我都不想折腾了,都买了好几个域名了,阿里和腾讯都买了域名,结果没半点用,内网https是绿色了,外网5001的端口直接无效证书不让访问了
青蛙兄,NAS的HTTPS访问正常,可是怎么设置PHOTO STATION的HTTPS访问?在PHOTO STATION用HTTP访问正常,里面设置HTTPS跳转后外网就无法访问了。
证书的安全配置里面也没有PHOTO STATION的的选项,请问怎么解?
呃,你是使用了 Synology 应用程序门户 里面的设置么?我都是在 DSM 里打开的呀
我已经处理好,我的做法是在“外部访问”里加了一个“路由器”配置,把443映射出去,并在路由器上443映射,在PS里面设置自动转向HTTPS,然后就可以了。
syno-acme-master 通过脚本自动注册证书,可以避过80端口问题
请教下啊:
目前是用的lede拨号上网,群晖NAS在LEDE下面接着,域名是购买的阿里云域名,目前通过在LEDE端口转发实现了域名访问NAS,但实现不了https方式,有办法解决吗?我是用的lede里面的ALIYUNDNS插件实现的
域名访问成功,而 htts 访问失败,大概有几个原因:
1. https 证书配置问题,要先确保在内网可以 https 成功(修改 hosts 文件将域名指向局域网 IP 即可)
2. 端口转发问题,需要转发 DSM 的 https 端口,而非 http 端口,一般是 5001
3. 433 端口也是被封的,需要使用其他公网端口。
其他问题是无法想象到的了,需要看机器才知道
证书配置成功了,外网访问页面有小绿锁。现在有一个问题,内网访问,会提示不安全的连接,需要手动点击忽略,怎么样设置可以完全解决。
用外网地址在内网访问即可。或者做一个内网 DNS,将域名解析到内网就行了。
用tx的证书吧,免费1年签一次,还能提醒自己别忘记折腾,挺好。