准备工作
下载安装acme.sh
首先要开启DSM的SSH管理功能,然后使用SSH相关软件登录后台
第一种方式
提权至root账号
sudo su
找一个方便的路径存放acme.sh, 这里我选择了root的根目录/root
cd ~
通过官方脚本安装, 因为群晖没有crontab,所以需要加--force参数强制安装,邮箱替换自己的。
curl https://get.acme.sh | sh -s email=my@example.com --force
第二种方式
因为国内网络特殊性以及群晖本身系统奇葩,个人建议还是去Github把master分支在本地方便访问的设备上git clone或者打包zip下来,再上传到群晖内挪到你想要的路径,最后解压
解压zip并安装,同上需要--force
unzip acme.sh-master.zip -d acme.sh
cd acme.sh
./acme.sh --install -m my@example.com --force
免费申请的证书校验有点毛病,推荐通过--server换成letsencrypt
设置环境参数(DnsPod)
export DP_Id="填写API ID"
export DP_Key="填写API Key"
申请泛域名证书
/root/.acme.sh/acme.sh --issue --dns dns_dp -d example.com -d *.example.com [--server letsencrypt]
部署默认证书
使用临时管理员
这个方法适合没使用二步认证的群晖设备
创建并使用临时管理员,部署完成后会自动删除
export SYNO_USE_TEMP_ADMIN=1
部署证书
/root/.acme.sh/acme.sh --deploy --home /root/.acme.sh -d "example.com" --deploy-hook synology_dsm
使用已有管理员账号
默认只需要设置账号和密码环境变量即可,如果开启二步认证2FA功能,则必须加上SYNO_DEVICE_NAME给acme.sh调用赋名
export SYNO_Username='Zakikun'
export SYNO_Password='账号密码'
export SYNO_DEVICE_NAME="CertRenewal"
期间会提示你输入一次上述SYNO_Username对应的群晖账号的二步验证密码
"Enter OTP code for user 'Zakikun':
输入完毕成功部署后,脚本就会在对应的域名证书目录下记录保存,以后就不用再输入账号、密码和二步验证密码了
查看保存信息
cat /root/.acme.sh/example.com_ecc/example.com.conf
添加计划任务自动更新和部署证书
这里注意一下,acme.sh默认只在证书到期前一个月才会真正检测到证书即将到期触发更新,想要强制更新可以添加参数 --force
而证书部署只要执行了就会进行部署,所以我个人是每周六执行一次证书检查更新,每个月1日0点执行一次证书部署,避免频繁重新部署DSM的默认证书
证书检查更新
/root/.acme.sh/acme.sh --cron --home /root/.acme.sh
在部署证书前提权一下,个人测试不提权会部署失败
sudo su root
部署证书
/root/.acme.sh/acme.sh --deploy --home /root/.acme.sh --deploy-hook synology_dsm -d "example.com"