群晖配置https证书及内部服务转发

在远程访问自己的 dsm 服务时,一般有 quickconnect / 内网穿透 / 公网IP + 端口映射等方案。其中体验最好的当属拥有独立的公网IP,并通过ddns用固定的域名访问。目前已经有很多文章介绍如何获取公网IP和配置DDNS,本文主要介绍以下两点

如何申请并配置 https 证书

如何配置服务转发

申请并配置证书

先说结论:阿里云可以申请有效期为1年的免费证书。

证书对于 https 的作用在于保证浏览器可以放心地畅通无阻地访问。如果没有有效的证书的话,我们就只能通过 http 或者让浏览器强制信任自签名证书的方式来访问,无论哪一种都增加了被嗅探和中间人攻击的风险。

通过阿里云申请免费证书也很简单,登录平台后搜索 "SSL 证书",点击"选购 SSL 证书"按钮

广告职业资格鉴定〈报名入口〉--职业技能鉴定报名系统×

接下来选择 DV 单域名证书免费试用并下单即可。在这里可能需要实名认证,请自行处理。如果之前下单过的话,这里可以直接跳过不需要再次下单。

然后打开控制台,搜索 "SSL 证书",打开管理页面,浏览到免费证书界面:

广告ssl 证书服务,大家用哪家的?×

然后点创建证书,创建出新的证书后,点击证书申请,填入域名,选择验证方式并下一步

如果是在阿里云的云解析DNS托管的域名,建议选择 手工 DNS 验证 ,可以自动配置 DNS 验证

其它托管平台的域名也可以通过配置 DNS 解析的方式进行验证,这里不再介绍

如果没有新增 DNS 解析的权限,也可以通过根目录放置文件的方式进行验证

完成申请后,点击下载,选择 nginx 类型并下载,得到一个 zip 包,解压得到 key 和 pem 文件。

接下来在 DSM 中,打开控制面板->安全性->证书,点击新增证书:

广告后台官网登录 后台登录 官网登录×

在这里选择替换已有证书,替换目前的默认证书,连续下一步到上传界面。在这里,分别将 key 文件和 pem 文件上传到私钥和证书栏:

广告服务器 价格表 服务器价格购买价格表 企业服务器价格表×

最后点击确定,等待 nginx 重新加载,证书就生效了!在路由器里配置端口转发,就可以用绑定的域名以 https 方式访问了。

如果无法通过阿里云获得证书的话,用 Lets Encrypt 也可以申请有效期为3个月的免费证书。其它的免费或很便宜的证书渠道欢迎补充。

配置转发

目前通过默认证书可以访问 DSM 控制台、Drive、Moments 等内置应用,但是外部应用无法走默认的 nginx 服务器。为了在访问如 transmission 控制台等内部应用时也能走 https,我们需要配置代理转发。

群晖支持以虚拟主机的方式进行服务转发,可以用相同的域名+不同的端口来进行转发,也可以用不同的域名+相同的端口进行转发。配置方式是:应用程序门户->反向代理服务器: 

广告https 免费证书获取指引×

但是如果二者都不符合需求的话,我们也可以通过修改 nginx 配置文件,来新增一条转发。这里我们需要通过 ssh 登录的方式来修改系统文件,具体怎么打开 ssh 并登录,这里不再进行介绍。

群晖的 nginx 配置文件在 /etc/nginx/nginx.conf,但是这里的文件我们不能随便修改,因为一旦服务重启修改会被覆盖。不过在 nginx.conf 中 include 了外部配置文件,我们可以通过外部文件进行配置。通过观察我们发现,nginx 配置文件的web 服务中 include 了 /usr/syno/share/nginx/conf.d/dsm.*.conf; 所以我们只需要创建一个独立的路径规则文件就可以了:

sudo vim /usr/syno/share/nginx/conf.d/dsm.transmission.conf

location ^~ /transmission/ {

    proxy_pass :9091;

}

最后,通过 synoservice --reload nginx 即可重新载入 nginx 配置文件。在这里除了 proxy_pass 指令外,其它的 nginx 指令也是支持的,对于其它服务,如需要指定域名、需要改写路径等,都可以在这里进行配置,我们就不再详细介绍了。

当然,除了群晖上的服务,局域网内其它的服务器上的 HTTP 服务也可以用这种方式进行转发(不过要注意账户防护,防止被入侵~)

总结

通过配置证书和转发,可以把所有的服务都通过 https 进行访问,提供更好的远程访问体验。除了 transmission,DSM 还有很多内置的提供的服务,如个人博客、企业主页、gitlab 等,期待大家去发掘。