起因
先写一下起因吧,随便给我自己记录一下群晖 SSL 申请的流程。
昨天我给家里的群晖上了 SSL,这里和其他域名申请证书的流程是差不多的,都是在机构注册申请证书,然后替换到要使用的主机上。
Let’s encrypt 是免费的证书发行机构,但代价就是每三个月要重新续一次,让我手动续期,那我会当场表演一个失忆,这里肯定会选择自动化方案的,其中最知名的项目就是 acme.sh,他能用命令处理申请、复制、更新的流程。
群晖也一样,群晖有内置证书,你得把新的换进去,并且替代他,才能让群晖默认使用新证书,但问题在于,群晖的证书路径是随机的,根目录一样,都是 /usr/syno/etc/certificate/_archive,但子目录名称不同,你需要 cat DEFAULT 查看内容,确定目录名,这一点光凭 acme.sh 是做不到的。
所以这里我使用的是 syno-acme 这个自动化脚本,虽然用的是 2.8.6 的 acme.sh,但问题不大,他项目中的 python 代码就是用来查询“随机目录名”的,将 acme.sh 申请到的证书拿去指定路径替换默认证书。
问题
我域名挂靠在 Cloudflare 上,所以脚本配置上用的就是 export DNS=dns_cf,如果你也用这个,剩余的参数可以到文档处查询。
如果你恰好使用的是令牌认证,那么你或许会遇到这样的报错信息:
[Thu Oct 2 17:10:11 CST 2025] Adding txt value: XXX for domain: _acme-challenge.foo.com
[Thu Oct 2 17:10:13 CST 2025] invalid domain当你确保所有权限都按文档上的设置了还是报错,那么很大概率是这里填错了:
这是默认的表单,运算符可以选择“在”或“不在”,进一步筛选。 
他坑就坑在,但凡你选过了其中一个运算符,你都无法将其删除,变成了要么“在”,要么“不在”,黑白名单你必须选一个,所以你这个令牌就“废”了(你就得去确认设备出口时的 IP,并且保证不变)。
正确的做法就是重新创建令牌,然后跳过这一行,什么都不选,什么都别碰,这样创建出来的就不会进行 IP 筛选,表示所有都放行,无黑白名单。
