问题描述

起因是我想在本地使用acme.sh申请一个临时的SSL证书,但是一直报错,报错信息是

invalid domain

Error add txt for domain:_acme-challenge.b2.aqcoder.cn

报错截图

一开始我以为是dnspod的id和密钥写错了,就去重新申请复制粘贴:

dnspod密钥截图

后来也是不行,还去了腾讯云的访问管理那里找来了有着dns全读写权限的子用户的密钥:

子用户密钥截图

结果还是报错,只能使用搜索大法了,把报错信息丢给必应:

搜索截图

找不到多少有用的信息,只能去acme.sh的issues里找了,因为我用的dns是腾讯云的pod,所以我的搜索词是acme.sh命令的dns_dp(使用invalid domain也是有相关性的):

github的issues截图

然后我找那些题目比较符合且有比较多对话的(从右边的对话数可以看出),最后找到这个比较符合我出现的问题:#2806

#2806!!

仔细查看他们的对话,可以从中找到一些收获:

找到问题了!

stone-stones 说 第二个token,腾讯云那边的api密钥不能直接使用,你需要在 DNSPod 开启密钥token,token页面包含一个id和token信息

问题解决

这就是我想要的信息,原来不能直接用API密钥得使用Token对应得id就是DP_Id,token就是DP_Key。重新申请一个token,记住值后重新执行一遍:

执行过程截图

问题总结

一份从出现问题,寻找问题,找到问题,搜索问题,解决问题的过程就这样完成了,期间花费了大概半个钟搜索问题,其余时间都花费很少。其实,如果熟悉debug,能想到问题的根源解决报错是最快捷的方式,但是在不熟悉debug,通过查看日志判断问题的根源的情况下,搜索相似问题成了目前我们大多数时候最常用的办法。

相关链接

使用DNSPOD.cn自动申请证书时,出现invalid domain · Issue #2806 · acmesh-official/acme.sh

acmesh-official/acme.sh: A pure Unix shell script implementing ACME client protocol