使用acme申请泛域名证书并开启自动更新
之前写过如何用acme申请域名证书. 申请单个域名证书很方便和快速, 但是很多时候要在一个服务器上部署多个服务, 比如聊天, 短链接, 博客等等. 为每一个服务申请一个子域名证书是很麻烦的, 也不方便管理, 而一个泛域名证书就可以被子域名重复使用, 方便很多. 实际上泛域名证书申请也没有比单个麻烦多少, 申请成功后就一劳永逸了.
安装和配置acme
首先还是安装acme.
curl https://get.acme.sh | sh
ln -s /root/.acme.sh/acme.sh /usr/local/bin/acme.sh
默认机构是ZeroSS, 想要切换可以用下面的命令.
# 机构换成Buypass
acme.sh --set-default-ca --server buypass
# 或LetsEncrypt
acme.sh --set-default-ca --server letsencrypt
然后注册一下.
acme.sh --register-account -m [email protected]
导入域名API
顶级域名的申请需要用到域名的API, 这里用cloudflare做例子.
首先进入CloudFlare的My Profile页面, 点击API Tokens, 然后点击Create Token.
然后点击Edit zone DNS的Use template.
然后只需要修改Zone Resources的Specific Zone, 选择你要申请的域名就好. 选择后点击Continue to summary.
然后点Create Token即可. 接下来页面就会显示你的Token, 记得保存, 关掉之后就没了.
开始申请
接下来进入VPS, 填入相关的信息.
export CF_Token="Your API Token"
export CF_Account_ID=""
export CF_Zone_ID=""
export CF_Email="[email protected]"
第一个填上一步申请的Token, 而CF_Account_ID和CF_Zone_ID在CloudFlare中点击域名就可以在右下角看到了. 邮箱就填写你的CloudFlare邮箱.
需要的信息设置好后就可以开始申请了.
acme.sh --issue --dns dns_cf -d yourdomain.com -d *.yourdomain.com -k ec-256
申请结束后安装在你想要的目录就行.
acme.sh --install-cert -d yourdomain.com -d *.yourdomain.com --ecc \
--key-file file_dir/server.key \
--fullchain-file file_dir/server.crt \
--reloadcmd "systemctl force-reload nginx"
自动更新
域名会自动更新, 所以不需要额外操作. 下面命令可以让acme自动更新.
acme.sh --upgrade --auto-upgrade
一些其他命令
手动检查证书是否过期, 会自动跳过没有过期的证书.
acme.sh --cron