let’s encrypt,泛域名,SERVFAIL和阿里云

let’s encrypt,泛域名,SERVFAIL和阿里云,第1张

用 let’s encrypt 给域名添加免费的 https 证书已经不是什么新鲜事,但其不久前才开始支持泛域名。我用的域名是在阿里云申请的,用第三方工具 lego 自动化为泛域名生成证书的时候遇到了SERVFAIL的错误,这里记录一下解决方案。

let's encrypt,https,dns-01,SERVFAIL,lego,七牛,万网,阿里云,泛域名

解决方案:在运行 lego 命令的时候,(可以通过修改 /etc/resolv.conf )暂时把 DNS 设置为万网或者阿里云的,例如 ns1.alidns.com (阿里云), dns19.hichina.com (万网),再运行命令即可。

啥叫泛域名?简单理解就是形如*.yourdomain.com这样的。这些域名对应的(可能)不是一个ip地址,没办法用默认的方法做认证。

即使不用泛域名,在为七牛的存储空间绑定域名的时候,自己只能设置一个 CNAME ,让自己的域名指向七牛的某一个域名,例如(形象地表示为)

img.yourdomain.com 是自己可控的域名,可是指向的地址(在七牛)并不可控, 同样没办法用默认的方式通过 let's encrypt 的认证。

这两种情况下,都需要 dns-01 这种认证方式。简单而直观的解释就是,认证过程中需要设置一个带特定值的TXT类型域名记录,以此证明域名的控制权,从而生成证书。

网上教程很多,大都使用了 let's encrypt 的 certbot ,需要手动去设置这个TXT记录。请自行搜索方案,这里不赘述。我用的是 lego ,可以自动生成TXT记录,原理就是它通过调用域名服务商的api自动创建这个记录,所以只需一条命令即可搞定,形如:

此时,可能会报错SERVFAIL(大概是因为我的域名在万网?具体原因我没有整太明白):

再探究下来,是因为域名的SOA记录没有正确查询到,如果你也遇到这个问题,试试这个命令,看有没有SERVFAIL错误:

如果有的话,解决办法就是本文上面 TLDR 里面介绍的方法!

泛域名证书是SSL证书的一种类型,通常被称为通配符SSL证书,申请步骤如下:

第一步:将CSR提交到代理商

CSR(Certificate Signing Request)文件必须由用户自己生成,也可以利用在线CSR生成工具。选择要申请的产品,提交一个新的订单,并将制作好的CSR文件提交。

第二步 资料提交到CA

当收到您的订单和CSR后,如果是域名验证型证书(DV SSL证书),在域名验证之后10分钟左右就可颁发证书,若是其他类型证书则是需要通过CA机构进行验证之后才可颁发。

第三步 发送验证邮件到管理员邮箱

权威CA机构获得资料后,将发送一封确认信到管理员邮箱,信中将包含一个 对应的链接过去。每一个订单,都有一个唯一的PIN以做验证用。

第四步 邮件验证

点击确认信中的链接,可以访问到CA机构验证网站,在验证网站,可以看到该订单的申请资料,然后点击”I Approve”完成邮件验证。

第五步 颁发证书

在用户完成邮件验证之后,CA机构会将证书通过邮件方式发送到申请人自己的邮箱,当用户收到证书后直接安装就可以了。若安装存在问题,我们是提供免费证书安装服务的。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/762236.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-18
下一篇2023-08-18

发表评论

登录后才能评论

评论列表(0条)

    保存