使用acme.sh通过Clouflare申请免费域名时,出现 `Add txt record error.`错误的一个解决方案

问题描述

当我们为freenom的免费域名(后缀为cf、tk等)使用dns方式申请证书的时候,会出现Add txt record error的错误。这并不是我们设置的问题。而是Cloudfare关闭了免费域名的api造成的。

解决方法

  1. 使用手动dns的方式,申请证书。缺点就是不能自动续签证书。
  2. 使用域名别名的方式申请证书(推荐)。

必要条件

  • 你必须要有一个能够通过 Cloudflare api更新域名解析的域名

步骤

  1. 在dns服务器上,添加一条免费域名的解析(CNAME),指向代理域名。格式如下:

    1
    2
    _acme-challenge.example.com
    => _acme-challenge.aliasDomainForValidationOnly.com

    注:example.com为免费域名,无法通过Cloudflare api更新域名解析。aliasDomainForValidationOnly.com是另一个域名,可以通过Cloudflare api更新域名解析。

  2. 设置 Cloudflare Token信息。参考dnsapi · acmesh-official/acme.sh Wiki (github.com)

  3. 使用如下命令申请证书

    1
    2
    acme.sh --issue  \
    -d example.com --challenge-alias aliasDomainForValidationOnly.com --dns dns_cf