2025群辉nas开启二步验证dsm7.2.x使用docker安装acme.sh,实现自动更新部署泛域名SSL证书。
一、获取dns服务商api授权(dnspod、aliyun、cloudflare等)
acme.sh中腾讯云参数
Tencent_SecretId="<Your SecretId>"
Tencent_SecretKey="<Your SecretKey>"
DNS=dns_tencent{/tabs-pane}
{tabs-pane label="阿里云"}
1.直接使用主账号获取AccessKey:右上角头像,点击“AccessKey”
2.或者子账号授权,在 RAM访问控制 -身份管理-用户-创建用户
3.取得获取阿里云AccessKey和AccessKey Secret

acme.sh中阿里云参数
Ali_Key="<Your SecretId>"
Ali_Secret="<Your SecretKey>"
DNS=dns_ali{/tabs-pane}
{tabs-pane label="cloudflare"}
1.获取区域ID、账户ID、 Global API Key
acme.sh中cloudflare参数
CF_Zone_ID="<区域ID>"
CF_Token="<API Token>"//“概述”右下角单击“获取您的API令牌”,没有令牌的的单击“创建令牌”,编辑区域 DNS点击使用模板,在“区域资源”里选择自己的域名然后生成API Token即可,记得保存到其他地方,该令牌下次是看不到的。
---------------或者------------
CF_Key="<Global API Key>" //登录Cloudflare之后,进入域名管理在“概述”右下角单击“获取您的API令牌”然后点击“查看”即可
CF_Email="<Cloudflare登录邮箱>"
以上二选一,建议第一个。{/tabs-pane}
{tabs-pane label="其他api"}
api查询
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
{/tabs-pane}
二、群晖创建acme.sh容器并配置环境
2.1 docker设置加速代理

https://docker.1ms.run2.1 安装neilpang/acme.sh
加速代理,只能在ssh中使用,可视化界面搜索没用。
打开ssh,输入安装命令,需要root权限。
sudo docker pull neilpang/acme.sh等待安装完后,在群辉Container Manager-映像中找到neilpang/acme.sh
双击运行
如图设置。
2.2 配置环境参数
容器名称,必须设置acme-sh(中间是英文-)
下一步,存储空间设置中点击添加文件夹,/docker/acme.sh-->/acme.sh
添加环境变量。
Tencent_SecretId : 填入第一步获取的 AccessKey
Tencent_SecretKey : 填入第一步获取的 AccessKey Secret
SYNO_Username : 登录群晖的用户名
SYNO_Password : 登录群晖的密码
SYNO_Certificate : 空字符串("")为替换默认证书
SYNO_Create : nas局域网登陆IP
SYNO_Port : 填入群晖内网的端口号(我用的默认端口5000未修改)

更改网络为host,添加命令daemon
勾选向导完成后运行此容器
点击下一步,完成。
此时只是容器搭建好了,但是证书还没有获取,也没有部署,必须要一个脚本文件来启动它。
三、创建脚本文件cert.sh
打开群辉filestation,在/docker/acme.sh目录下创建一个cert.sh文件,使用群辉文本编辑器打开,粘贴如下代码。
按照提示修改参数,我这里使用腾讯云,证书用的是letsencrypt
保存。
右键这个文件,然后属性,复制好路径位置,一会要用。
路径/volume1/docker/acme.sh/cert.sh
完成以上步骤之后,就可以来获取证书了。
四、ssh获取证书并一键部署到群辉
首先确认群晖的ssh端口是打开的,然后运行终端,连接群晖。并提升账号权限为root
sudo -i
bash /volume1/docker/acme.sh/cert.sh如果你没开启两步验证,到这里就结束部署成功。
五、解决群辉登陆设置两步验证(没开启两步的不用看)
前提:开启了两步验证也需要执行到第四步,来获取配置文件account.conf
(提前生成这个文件,配置参数,说是可以,没测试)
(提前在docker环境中配置这个参数应该也可以,但是你后期不好修改,需要重启容器)
5.1获取二步验证did参数
1.打开群辉dsm窗口,F12打开开发者模式,找到应用(application)-Cookie-子选项网址,右边找到did值。
2.acme.sh默认使用http登陆,建议你使用http的dsm来获取did值。(我是http提取的测试没问题,不清楚https的放到这里里能不能成功)
5.2配置did参数到account.conf
群辉filestation打开目录/docker/acme.sh/找到account.conf
以文本编辑器形式,打开account.conf
5.3重新执行ssh命令
按照第四部,重新执行ssh命令。
sudo -i
bash /volume1/docker/acme.sh/cert.sh现在就能成功了。
PS:或许可以为acme.sh专门新建一个子账号不开启二步,未测试,仅提供思路。
六、利用计划任务定期自动更新
打开群晖控制面板-任务计划-新增,账号选root
重复:可以2个月或者3个月以内都行,自己设置。
然后任务设置-运行命令,粘贴如下代码,视情况做修改:
bash /volume1/docker/acme.sh/cert.sh >> /volume1/docker/acme.sh/log.txt 2>&1
完工!
七、 后记
自己折腾了一晚上,有几个坑需要注意,部分是别人踩的坑记录。
1.设置了两步验证,需要设置SYNO_Device_ID,有的教程上写的是SYNI_DID,不行。
2.群晖docker部署,5月开始的续签出现问题,报找不到证书。根据本文作者提示,在此感谢,问题出在ACME版本,部署时候为3.0.2,AUTOUPGRADE设置为1,导致自动更新了版本为3.0.8,问题出现。不想开启两部验证,于是重新部署了一遍,AUTOUPGRADE设置为0,问题解决。
3.群辉不要配置强制http跳转https。(如果能解决,欢迎评论告诉我)
4.dsm老版本,环境配置使用rsa证书,然后关闭默认dsm的权限给附上ip限制,单独的管理员账户安全性就有了。(ACME也要退回3.0.7之前的版本,后面的版本强制开启2FA的)
觉得内容不错?我要
11
一切真知都是从直接经验发源的。
在革命实践中检验和发展真理,是马克思主义的基本原则。
不同质的矛盾,只有用不同质的方法才能解决。快来买快来快来了
希望能有用
未来是属于那些相信自己梦想的人。
同一性与斗争性的关系,就是矛盾双方既相互依存又相互1排斥的关系。
同一性与斗争性的关系,就是矛盾双方既相互依存又相互排斥的关系。
不要因为没有阳光,就放弃走进春天。
你若盛开,清风自来;心若浮沉,浅笑安然。
只要路是对的,就不怕路远。