https免费泛域名证书申请

acme.sh 实现了 acme 协议, 可以从 letsencrypt 生成免费的证书.

主要步骤:

  1. 安装 acme.sh
  2. 生成证书
  3. copy 证书到 nginx/apache 或者其他服务
  4. 更新证书
  5. 更新 acme.sh
  6. 出错怎么办, 如何调试

下面为作者自己搭建时步骤的详细介绍,也可以直接参考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在安装的时候就已经设置了自动更新,所以这一步不用关心,很省心。

手动更新命令:

acme.sh --cron -f

5、设置软件自动更新

acme.sh --upgrade --auto-upgrade

你可能感兴趣的:(运维,https,网络协议,ssl,网络安全,运维)