464 words
2 minutes
使用acme.sh为泛域名+多域名申请用一个SSL证书
灵感来源:网上冲浪的时候就点开了youtube网址旁边那个小锁,我很好奇为什么显示的是*.google.com呢?就去查了一下,原来SSL证书可以一书多用,就尝试着申请了一下
这种方法的好处就是:便于多域名管理
把需要申请证书的域名全部CNAME到另一个域名
这样就不用每个域名都添加TXT记录了,也方便后面的自动续期 比如我有
songhappy.cnmirror.sh.cnszu.sh.cnszuoj.cnsh0.cn要申请共用证书,这里全部给他们添加CNAME记录_acme-challenge到_acme-challenge.061224.xyz
然后找一下061224.xyz是在腾讯云,拿一下SecretId和SecretKey
下载acme.sh
curl https://get.acme.sh | sh -s email=youremailsource ~/.bashrc申请证书
先添加环境变量
export Tencent_SecretId="yourskid"export Tencent_SecretKey="yourskey"不同厂商前面api的名字不同,请查阅相关文档acmesh-official/acme.sh
使用以下命令批量申请证书
acme.sh --issue \ -d songhappy.cn -d *.songhappy.cn \ -d szuoj.cn -d *.szuoj.cn \ -d mirror.sh.cn -d *.mirror.sh.cn \ -d szu.sh.cn -d *.szu.sh.cn \ -d sh0.cn -d *.sh0.cn \ --challenge-alias 061224.xyz \ --dns dns_tencent \ --server letsencrypt完成
/root/.acme.sh/songhappy.cn_ecc/songhappy.cn.cer/root/.acme.sh/songhappy.cn_ecc/songhappy.cn.key/root/.acme.sh/songhappy.cn_ecc/ca.cer/root/.acme.sh/songhappy.cn_ecc/fullchain.cer得到这些文件
| 文件名 | 对应角色 | 详细解释 | Nginx 配置项 |
|---|---|---|---|
| songhappy.cn.key | 私钥 🔑 (最重要) | 千万不能泄露给别人! 这是服务器用来解密数据的“钥匙”。如果它丢了,别人就能伪造你的网站。 | ssl_certificate_key |
| fullchain.cer | 完整证书 📜 (最常用) | 这是给 Nginx/Apache 用的。 它包含了“你的证书”+“颁发机构的中间证书”。 浏览器需要这一整套才能信任你的网站。 | ssl_certificate |
如果不需要了,需要移除域名
先看当前哪些证书会被自动续期:
acme.sh --list把某个域名从续期列表移除:
acme.sh --remove -d example.com# 如果是 ECC 证书再加 --eccacme.sh --remove -d example.com --ecc如果acme.sh彻底不想用了
acme.sh --uninstall 使用acme.sh为泛域名+多域名申请用一个SSL证书
https://blog.songhappy.cn/posts/acmesh/ 