群晖, 运维, 技术

群晖 Let's Encrypt 配置多个泛域名 SSL 证书自动更新

2021年01月08日

之前一直用的 syno-acme 配合群晖的计划任务实现泛域名 SSL 证书的更新,但是最近想切换域名,但是又要保持原有域名一段时间可用。syno-acme 的方案只支持默认证书的配置,群晖上多个证书的配置确实比较麻烦,几年前也折腾过。

不过调研了下发现,Let's Encrypt 支持将多个域名绑定到同一个证书里,于是找了下解决方案,果然有位兄弟基于 syno-acme 做了些修改,支持多个域名。不过这位兄弟是 Hard Code 的,不够通用化,于是对 syno-acme 做了些改进,并提交了 Pull request,希望对大家有帮助,Fork 仓库

主要修改内容:

配置时可通过逗号分隔多个域名,config 如下:

# 你域名,如 baidu.com sina.com.cn 等,多个域名之间逗号分隔,支持泛域名
export DOMAIN=your_domain1,*.your_domain1,your_domain2,*.your_domain2

cert-up.sh 主要修改了如下的地方:

for d in ${DOMAIN//,/ }
do
  domain_params="${domain_params} -d ${d}"
done
${ACME_BIN_PATH}/acme.sh --force --log --issue --dns ${DNS} --dnssleep ${DNS_SLEEP} ${domain_params}
${ACME_BIN_PATH}/acme.sh --force --installcert ${domain_params} \
  --certpath ${CRT_PATH}/cert.pem \
  --key-file ${CRT_PATH}/privkey.pem \
  --fullchain-file ${CRT_PATH}/fullchain.pem

通过逗号分隔 DOMAIN 中的多个域名,并循环拼接多个 -d 参数即可。

这么修改后,群晖就可以愉快的支持多个主域名的 SSL 证书啦,爽!

您已成功订阅 HADB.ME
真棒!下一步,完成结账以便解锁 HADB.ME
欢迎回来!您已登录成功。
登录失败,请重试。
操作成功!您的账户已全面激活,现在您有所有内容的权限了。
错误!Stripe 结账失败。
成功!您的账单信息已更新。
错误!账单信息更新失败。