用 git 来 对letsencrypt 证书管理

在做 https 的时候,使用了 letsencrypt 的证书,letsencrypt 的证书 90 天更新一次,正常情况下,只有一个域名就很方便处理,写一个 crontab 就搞定了。

letsencrypt 出了泛域名后,泛域名只支持 1 级的匹配。当有多个子域名使用的时候,管理起来就很难受。

所幸的是,acme.sh 支持 deploy_hook 来自行调用一个 shell 脚本。所以用不到10行的代码,做了一个利用 git 来管理域名证书。

  1. 首先在acme.sh里面配置一个 git 的地址。
  2. 申请泛域名时同时申请泛域名的主域名
  3. hook 提交按照域名提交到不同的分支
  4. 线上对应的域名只需要配置一个 crontab 来定时拉 git ,重启服务。

思路虽然简单粗暴,这样做的好处是可以很清楚的在git上面看到证书的更新,同时更新也可以利用 gitlab 的 hook 通知到 钉钉。

阅读更多