运维|https免费泛域名证书申请
【运维|https免费泛域名证书申请】acme.sh 实现了 acme
协议, 可以从 letsencrypt 生成免费的证书.
主要步骤:
- 安装 acme.sh
- 生成证书
- copy 证书到 nginx/apache 或者其他服务
- 更新证书
- 更新 acme.sh
- 出错怎么办, 如何调试
1、安装证书申请工具
curl https://get.acme.sh | sh
这个命令后会将acme.sh安装到~/.acme.sh/目录下,重新载入~/.bashrc
source ~/.bashrc
2021-10-09补充:2、开始申请
由于新版本作者默认使用了新的服务器(参见:acmesh-官方Wiki),所以后续执行命令会限制-d的域名参数个数,在执行后续命令前,使用以下命令指定旧服务器后即可:
acme.sh--set-default-ca--server letsencrypt
每次更新后都需要优先执行此语句
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 的文件夹, 里面有证书和密钥
- 参考地址: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"
证书有效期是 90 天的,需要定期重新申请,不过acme在安装的时候就已经设置了自动更新,所以这一步不用关心,很省心。
- 将刚才生成的证书复制到对应的nginx的ssl目录,并重启nginx
acme.sh --cron -f
5、设置软件自动更新
acme.sh --upgrade --auto-upgrade
推荐阅读
- 画解算法(1.|画解算法:1. 两数之和)
- ts泛型使用举例
- 探索免费开源服务器tomcat的魅力
- https请求被提早撤回
- 霍兰德职业代码对照表
- 拒绝可以很艺术,或者很行为艺术。
- www和https://又被Chrome地址栏隐藏了
- AnyProxy抓取http/https请求
- 京郊有处免费大峡谷,人少清幽,凉爽贯彻“小西藏”
- 计算机网络基础TCP\HTTP\HTTPS