说明:群晖Quickconnect 的访问速度太慢,很大一批都宁愿自己淘一个低延迟且水管足够的VPS服务器配合群晖NAS来做内网穿透使用,来达到提升外网访问速度的目的。而对于一个暴露在外网的NAS来说,让后台访问支持HTTPS协议变得尤为重要。很多人会说为什么不用群晖Quickconnect 服务,使用DSM系统自带的SSL证书?毕竟 Quickconnect 访问慢啊,另外我们很多时候需要在NAS上建站或者部署安装其他的项目都需要用到泛域名证书。
免费的泛域名证书——Let’s Encrypt 一个就搞定,而且还有相应的开源脚本Neilpang/acme.sh 轻松便捷的签发证书,可以申请一个类似*.domain.com
的单一证书,就可以适配abc.domain.com
,xyz.domain.com
这类的子域名,而不需要单独为每个子域名申请证书了。
今天的介绍的重点是:如何使用群晖SSL自动签发脚本 andyzhshg/syno-acme 为你的群晖NAS配置HTTPS泛域名证书。
1. 准备工作
此脚本主要采用的一键替换群晖默认证书的方案,所以,为了防止意外,确保你的证书列表里只有这一条记录,即默认证书那一条。实际上因为支持了泛域名证书,基本上这一条记录就足够用了(当然,如果你要管理多个域名,可能本文的方法并不实用)。所以开始工作前你的证书列表大概应该是这个样子:
2. 下载一键更新脚本
这是一键脚本的项目地址:andyzhshg/syno-acme。
如果你对项目本身不感兴趣,可以直接下载打包好的工具:syno-acme v0.1.5。
可以通过 File Station 将下载的工具上传到NAS的任意目录下,并解压。
解压后大概是这个样子:
3. 配置脚本参数
编辑脚本的配置文件config
:
如图所示,需要编辑的几个字段我用蓝框标记出来了。
首先是DOMAIN,也就是你的域名。
然后是DNS的类型,根据服务商的不同,DNS类型各不相同,比如阿里云(dns_ali),Dnspod(dns_dp),Godaddy(dns_gd)等。
最后要根据不同的服务商配置服务上提供的授权密钥等信息,比如我的域名服务商是阿里云,我需要编辑Ali_Key
和Ali_Secret
字段,字段的内容需要到域名服务商的管理后台来查看,因为不同的服务商的查看方式不同,请大家根据自己的实际情况去查找吧。
需要指出的是,我给出的配置文件模板并没有给出所有acme.sh支持的域名服务商,大家可以参照 https://github.com/Neilpang/acme.sh/tree/master/dnsapi来添加自己的配置。一般情况下,这个页面每个文件对应一个域名服务商,比如dns_ali.sh
就是对应阿里云,文件名去掉.sh
扩展名就是DNS类型,比如阿里云的DNS类型就是dns_ali
。打开对应文件, 一般都可以在文件的头部找到需要设置的授权信息对应的密钥,比如阿里云的授权密钥所在的位置如下图所示:
config
模板中没有的服务商,请大家自行完善。
4. 配置定时任务
i. 查找脚本路径
在 File Station 中定位到下载的一键脚本的目录,查看该脚本的绝对路径:
复制完整的绝对路径到剪贴板。
ii. 创建定时任务
打开 控制面板 / 任务计划 / 新增 / 计划的任务 / 用户自定义的脚本
:
设置任务名称和操作用户,需要注意的是这里一定要选择root
:
设置计划的时间和周期,这里只支持按月或者年重复,我们只能取按月重复才能满足 Let’s Encrypt 至少3个月更新一次的要求:
设置执行脚本,这里我们将脚本的输出重定向到了一个log.txt
的文件中,以方便后期查看脚本的执行情况:
上图红框中的脚本命令为(注意没有换行):
/volume1/nas_share/certs/syno-acme/cert-up.sh update >> /volume1/nas_share/certs/syno-acme/log.txt 2>&1
具体的路径是步骤 i
中复制的路径。
另外,在申请证书/更新证书过程,如果出现 code:60
错误,无法建立SSL连接,请更新群晖内置CA机构根证书。执行以下命令:
# 备份根证书
sudo mv /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt.bak
# 更新根证书
sudo curl -Lko /etc/ssl/certs/ca-certificates.crt https://curl.se/ca/cacert.pem
iii. 试运行脚本
可以在新建的任务上点击右键立即执行任务:
这样脚本就会运行,自动更新证书,并重启web服务器加载新的脚本。以后,NAS会每隔一个月执行一次该脚本,自动更新证书。
iv. 回滚
脚本里提供了回滚命令,可以通过ssh登录到nas,定位到对应目录,执行如下命令回滚证书目录到备份的状态:
/volume1/nas_share/certs/syno-acme/cert-up.sh revert
总结
这个一键脚本的特点是支持回滚操作,又最小限度的触碰系统文件,仅/usr/syno/etc/certificate/_archive
目录会被更改。acme.sh
工具随用随时下载,保持最新,用完即删除,不占用磁盘空间。
相关推荐
- 群晖 Synology 部署 Bitwarden 密码管理器
- 在群晖 Synology 上搭建 Bark 消息推送服务器
- 群晖 Synology 部署 ZeroSSL 泛域名证书
- 因群晖NAS系统CA证书失效导致的系列问题
- 在群晖NAS上搭建Cloudreve网盘系统
- ChineseSubfinder - 电影剧集中文字幕刮削器(群晖 Docker 部署篇)
文章作者:喵斯基部落
原文地址:https://www.moewah.com/archives/1301.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。
请问这个脚本是否有更新支持dsm7.2的计划呢?我在issues #101上有提到dsm7.2导入证书失败,需要手动导入证书,我目前正在使用docker的gdy666/lucky项目签发证书后手动导入证书,确实是比较麻烦的。
看这篇 --> https://www.moewah.com/archives/5199.html
找到原贴了,这个提到的方法在dsm7中又个bug,新的系统修改了nginx相关的东西,导致脚本出了点小问题,可以直接使用原脚本的dsm7分支的代码,也可以查看下面链接进行修复
https://www.v2ex.com/t/875859
看了一下 DSM7 重载 nginx 可以用
systemctl reload nginx
来完成,之后空闲了我再考虑更新一下。感谢你的分享大佬这个方案现在还可以使用吗~
可以
其实也没必要搞vps ipv6就能覆盖大部分情况的需求了 现在v6也基本普及了 不支持的地方也很少了
把脚本设置定时启动后,再怎么办呢?怎么增加到NAS上使用呢?
上面的脚本你执行过了,如果能成功就已经将群晖的默认证书替换掉了。如果控制面板证书一栏没有,则说明失败,你能就需要新增证书进行替换,查看下sh脚本内容你能看到证书的路径的。
具体情况还需要看sh脚本执行产生的log日志文档根据报错自己去分析一下,但如果脚本执行失败的话还是不建议再做其它操作,容易折腾出毛病。
你这脚本有问题吧,那个tar压缩包可以正常下载下来吗?
脚本没问题,看到github,意味着要上某个工具,请自备魔法。