最新消息:

Freenom免费域名通过CloudFlare DNS API自动激活SSL证书方案

技术 admin 9112浏览 0评论

早上起来,发现一堆告警邮件,发现使用了Freenom 免费域名的nginx服务器自动重启失败,查看原因,是Let’s Encrypt 到期了,证书自动激活失败,导致nginx启动检测未通过。

环境情况:

1、域名使用了在Freenom申请的免费域名
2、DNS解析托管在CloudFlare上
3、使用acme.sh ,通过CloudFlare 的DNS API自动激活SSL证书

采用此种模式,已经稳定运行了很长时间,acme.sh自动激活也运行良好。

解决步骤1:手动执行证书:

/etc/letsencrypt/acme.sh –issue –dns dns_cf –home /etc/letsencrypt -d mydoamin.com -d *.mydoamin.com -d mydomain.ga -d *.mydomain.ga -d mydomain.gq -d *.mydomain.gq –force –debug 2

其中:
mydomain.com为付费购买的域名
mydomain.ga 、mydomain.gq为Freenom上免费申请的域名

手动执行激活命令失败,debug日志并没有提供什么有用信息。

解决步骤2:升级acme.sh

由于出现过acme.sh未及时升级,导致类似问题,因此以为又是acme.sh未及时更新导致,
acme.sh –upgrade
升级后问题依旧。

解决步骤3:临时用standlone模式,生成证书,以保证nginx能够正常启动:
/etc/letsencrypt/acme.sh –issue –home /etc/letsencrypt -d mydoamin.com -d *.mydoamin.com -d mydomain.ga -d *.mydomain.ga -d mydomain.gq -d *.mydomain.gq –force –yes-I-know-dns-manual-mode-enough-go-ahead-please

 

解决步骤4: DNS alias mode 模式

在acme.sh github 的issues 中 https://github.com/acmesh-official/acme.sh/issues/2901 ,有人提到:Cloudflare doesn’t support setting DNS record for domains with .cf, .ga, .gq, .ml, or .tk TLD with api.Cloudflare 。

既然不支持.gq等免费域名,试着采用 DNS alias mode 模式。
步骤:
1、在CloudFlare中mydomain.ga和mydomain.gq增加 CNAME值,
Type:CNAME
NAME:_acme-challenge
Target:_acme-challenge.mydomain.com
TTL:Auto
Proxy status:Proxied

2、签发证书
/etc/letsencrypt/acme.sh –issue –dns dns_cf –home /etc/letsencrypt -d mydoamin.com -d *.mydoamin.com -d mydomain.ga –challenge-alias mydomain.com -d *.mydomain.ga -d mydomain.gq -d *.mydomain.gq –force

注意:这里mydomain.com为收费域名,因此可以通过DNS API自动激活,而mydomain.ga和mydomain.gq为免费域名,不能直接通过DNS API激活证书,因此以上命令通过 –challenge-alias mydomain.com 让 mydomain.ga和mydomain.gq使用DNS alias mode 模式。

执行后,依然报错

用nslookup -type=cname mydoamin.ga 发现无返回结果,挺奇怪。
突然发现mydomain.ga和mydomain.gq增加 CNAME值的 Proxy status:Proxied ,尝试修改为 DNS only,再次执行激活命令,成功了。

在CloudFlare论坛也有人回答:

https://community.cloudflare.com/t/cname-records-are-not-shown-in-a-cname-lookup/3393/6

总结:
1、 CloudFlare目前已经不支持.cf, .ga, .gq, .ml, .tk 等免费域名通过DNS API修改DNS记录,可以变通采用DNS alias mode 模式
2、在设置_acme-challenge CNAME时候,Proxy status一定要选择DNS only,否则CloudFlare会把此CNAME作为普通a记录处理

转载请注明:出家如初,成佛有余 » Freenom免费域名通过CloudFlare DNS API自动激活SSL证书方案

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址