群辉搭配acme实现自签证书申请
0 前言
之前使用docker申请的SSL证书又过期了,而且上次记录的笔记遗失了,导致又要重新配置,这次参考了官方文档关于群辉的适配说明,借助Synology DSM deployhook,可以实现自动更新证书。我目前使用的是DNSPod解析域名(域名部分用 xxx.com 代替),同时通过ZeroSSL申请泛域名证书,请注意加粗的内容。
1 配置步骤
1.1 申请 DNSPod Token
https://console.dnspod.cn/account/token/token
获得 ID 和 Token
1.2 下载 acme.sh
开启群辉ssh并登录。
$ sudo su
$ cd ~$ wget https://github.com/acmesh-official/acme.sh/archive/master.tar.gz
$ tar xvf master.tar.gz
$ cd acme.sh-master/
$ ./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "email@gmailcom"
$ source ~/.profile
1.3 创建证书
需要注意国内DNS验证通常无法通过,需要添加“--dnssleep 30”限制,跳过验证。一般设置为30秒足够了,如果报错可以尝试增加这个时长。
$ export DP_Id="XXXXXX"
$ export DP_Key="XXXXXXXXXXXXXXXXXXXXXXXXXX"
$ ./acme.sh --home . --issue --dns dns_dp -d xxx.com -d '*.xxx.com' --server zerossl --dnssleep 30 --force
1.4 部署证书
新建一个群辉账户,注意分配到 "administrators" 用户组中,其他所有的权限都可以取消。替换下方命令中的用户名和密码,以及登录页面的端口号。由于我开启了双因子验证(2FA),需要登录后提取名称为“did”的cookie,并填写入SYNO_DID。注意登录时需要选中“保持登录”。
$ export SYNO_Username='XXXXXX'
$ export SYNO_Password='XXXXXXXXXXXX'
$ export SYNO_Scheme="https"
$ export SYNO_Port="xxxxx"
$ export SYNO_Certificate=""
$ export SYNO_DID='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
$ export SYNO_Create=1
$ ./acme.sh --deploy --insecure --home . -d 'xxx.com' --deploy-hook synology_dsm
1.5 自动更新证书
在群辉设置的“任务计划”中,新增“用户定义的脚本”,“用户账号”选择为“root”,运行时间可以设置为每周六执行一次。任务设置中的“用户命令”填写如下:
# renew certificates
/usr/local/share/acme.sh/acme.sh --cron --home /usr/local/share/acme.sh/
参考链接
1. https://github.com/acmesh-official/acme.sh/wiki/Synology-NAS-Guide