为多个域名添加HTTPS,泛域名(多域名)证书
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为多个域名添加HTTPS,泛域名(多域名)证书相关的知识,希望对你有一定的参考价值。
参考技术A OR创建acme.sh别名
安装过程中会添加cronjob,每天自动检测所有证书是否需要更新。查看定时任务(证书有效期一般为90天,acme.sh会在证书失效之前进行自动更新):
dnsapi 用法说明
指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用
https免费泛域名证书申请
acme.sh 实现了 acme
协议, 可以从 letsencrypt 生成免费的证书.
主要步骤:
- 安装 acme.sh
- 生成证书
- copy 证书到 nginx/apache 或者其他服务
- 更新证书
- 更新 acme.sh
- 出错怎么办, 如何调试
下面为作者自己搭建时步骤的详细介绍,也可以直接参考acmesh-官方的说明进行安装
1、安装证书申请工具
curl https://get.acme.sh | sh
这个命令后会将acme.sh安装到~/.acme.sh/目录下,重新载入~/.bashrc
source ~/.bashrc
2021-10-09补充:
由于新版本作者默认使用了新的服务器(参见:acmesh-官方Wiki),所以后续执行命令会限制-d的域名参数个数,在执行后续命令前,使用以下命令指定旧服务器后即可:
acme.sh --set-default-ca --server letsencrypt
每次更新后都需要优先执行此语句
2、开始申请
2.1、方法一
- 设置DNS,执行申请(将以下命令中的qbly.top换成自己的一级域名):
acme.sh --issue -d qbly.top -d *.qbly.top --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please
执行响应:[Sun May 26 14:33:52 HKT 2019] Creating domain key [Sun May 26 14:33:52 HKT 2019] The domain key is here: /root/.acme.sh/qbly.top/qbly.top.key [Sun May 26 14:33:52 HKT 2019] Multi domain='DNS:qbly.top,DNS:*.qbly.top' [Sun May 26 14:33:52 HKT 2019] Getting domain auth token for each domain [Sun May 26 14:34:03 HKT 2019] Getting webroot for domain='qbly.top' [Sun May 26 14:34:03 HKT 2019] Getting webroot for domain='*.qbly.top' [Sun May 26 14:34:03 HKT 2019] Add the following TXT record: [Sun May 26 14:34:03 HKT 2019] Domain: '_acme-challenge.qbly.top' [Sun May 26 14:34:03 HKT 2019] TXT value: 'CFqIh5XQRdN7_DKzGqqLp8DJ-g9mB86zMl1fzi2TeuY' [Sun May 26 14:34:03 HKT 2019] Please be aware that you prepend _acme-challenge. before your domain [Sun May 26 14:34:03 HKT 2019] so the resulting subdomain will be: _acme-challenge.qbly.top [Sun May 26 14:34:03 HKT 2019] Add the following TXT record: [Sun May 26 14:34:03 HKT 2019] Domain: '_acme-challenge.qbly.top' [Sun May 26 14:34:03 HKT 2019] TXT value: 'Bo0VhbDQjyVISgEEwce8Ul1bVL6U1E6whfoKY-V9Cgk' [Sun May 26 14:34:03 HKT 2019] Please be aware that you prepend _acme-challenge. before your domain [Sun May 26 14:34:03 HKT 2019] so the resulting subdomain will be: _acme-challenge.qbly.top [Sun May 26 14:34:03 HKT 2019] Please add the TXT records to the domains, and re-run with --renew. [Sun May 26 14:34:03 HKT 2019] Please add '--debug' or '--log' to check more details. [Sun May 26 14:34:03 HKT 2019] See: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh
- 根据返回数据,T给域名添加XT记录后执行(TXT记录的值为上一个命令执行后日志中的TXT value)
acme.sh --renew -d qbly.top -d *.qbly.top --yes-I-know-dns-manual-mode-enough-go-ahead-please
- 在目录下会生成一个 qbly.top 的文件夹, 里面有证书和密钥
2.2、方法二 (推荐)
- 参考地址:https://github.com/acmesh-official/acme.sh/wiki/DNS-alias-mode 若域名支持DNS api 则点击此链接并点击右侧dnsapi菜单,查询域名对应的accesskey
- 然后把自己的id和key 配置成环境变量。
如:我使用的是阿里云的域名,查询到dnsapi授权后按如下命令分别加入环境变量(Ali_key、Ali_Secret中的Ali和接下来执行的申请证书命令中的dns_ali对应,这很重要)export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje1" export Ali_Secret="jlsdflanljkljlfdsaklkjflsaa"
-
最后直接运行申请证书命令, 会自动在你的dnspod 后台解析一条txt记录,可先登录域名后台查验cname解析, 并完成申请证书。(以下命令中的s1.qbly.top、s2.qbly.top为同时支持这两个二级域名的证书,添加多个时,使用“-d *.aa.myyuming.com”的格式)
acme.sh --issue -d qbly.top -d *.qbly.top -d *.s1.qbly.top -d *.s2.qbly.top --domain-alias myalias.qbly.top --dns dns_ali --log
2.3 方法三
acme.sh --issue -d qbly.top -d *.qbly.top --nginx
3、复制证书
- 将刚才生成的证书复制到对应的nginx的ssl目录,并重启nginx
acme.sh --installcert -d qbly.top --key-file /etc/nginx/ssl/qbly.top/qbly.top.key --fullchain-file /etc/nginx/ssl/qbly.top/qbly.top.cer --reloadcmd "service nginx force-reload"
4、证书更新
证书有效期是 90 天的,需要定期重新申请,不过acme在安装的时候就已经设置了自动更新,所以这一步不用关心,很省心。
- 将刚才生成的证书复制到对应的nginx的ssl目录,并重启nginx
手动更新命令:
acme.sh --cron -f
5、设置软件自动更新
acme.sh --upgrade --auto-upgrade
以上是关于为多个域名添加HTTPS,泛域名(多域名)证书的主要内容,如果未能解决你的问题,请参考以下文章