CNAME记录指向vercel影响了CAA记录导致的SSL证书无法签发的问题


直接看解决方案

最狠的:直接把dns中有关vercel全暂停了
或者:先暂停二级域名对vecel的解析,即暂停example.com->vecel
然后再暂停受影响的子域的vecel 即暂停 a.example.com->vecel

问题

今天阿里云告知我有一个域名的SSL证书快过期了,已经是老手的我熟练地打开阿里云控制台申请证书。

但是发生了一件怪事,以往证书都能在一分钟下发,而这一次等了好久都不行。我决定先睡一觉起来再看看。

睡醒以后,打开阿里云控制台,发现还是不成功,此时我仍然怀疑是阿里云的锅。于是我用freessl再申请了一次,等到下午还是没成功。用myssl.com/检测的结果如下:

地区是否匹配
中国不匹配 (验证失败,您的CAA配置不允许当前CA为您签发证书,请修改为:symantec.com或digicert.com)
香港不匹配 (验证失败,您的CAA配置不允许当前CA为您签发证书,请修改为:symantec.com或digicert.com)
美国不匹配 (验证失败,您的CAA配置不允许当前CA为您签发证书,请修改为:symantec.com或digicert.com)

我没设置过CAA记录啊!

我心想应该不是DNS缓存的问题吧?不可能啊!

但是我还是到阿里云控制台把所有的DNS记录都暂停解析。

结果,居然成功了!成功了!

后经过排查发现是解析到vercel上的cname记录导致的问题发生,这是为啥呢?vercel还有权限帮我设置CAA记录!?

原因

后经一番搜索终于知道了原因,就是因为CAA记录惹的祸

CAA(Certificate Authority Authorization),即证书颁发机构授权。是一项新的可以添加到DNS记录中的额外字段,通过DNS机制创建CAA资源记录,可以限定域名颁发的证书和CA(证书颁发机构)之间的联系。未经授权的第三方尝试通过其他CA注册获取用于该域名的SSL/TLS证书将被拒绝。

域名设置 CAA 记录,使网站所有者,可授权指定CA机构为自己的域名颁发证书,以防止HTTPS证书错误签发,从而提高网站安全性。

补充一个知识点,CNAME记录会影响CAA记录:

CAA 记录检查继续对指向不同域的 CNAME 记录进行。在此例中,www.example.com 指向 www.example.net ,后者也有 CAA 记录:

(Example 7 / www.example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CNAME www.example.net
www.example.net.   CAA           0      issue   ";"

(Result: CAA failed)

第一个记录将 CAA 检查转向 www.example.net。此 CAA 记录可阻止任何 CA 颁发证书,证书办法机构无法为 www.example.com 颁发证书。

如果所指向的域 (www.example.net) 没有 CAA 记录,则 CAA 记录检查将上攀到基本域 (example.com)。

(Example 8 / www.example.com)
Domain   Record type  Flags  Tag      Value   
www.example.com.   CNAME www.example.net
example.com.   CAA           0      issue   "amazon.com"

(Result: CAA passed)

用白话说就是因为设置了cname指向vercel,而vercel设置了CAA记录,从而影响了我们的域名的CAA记录,用工具查询后发现确实如此:

{
  "canIssue": false,
  "status": "IssueMismatch",
  "domain": "czqu.ren",
  "queryAt": "Sep 30, 2021 11:21:55 AM",
  "elapsed": 1,
  "caaRecordSet": [
    {
      "domain": "czqu.ren",
      "caaRecords": [
        {
          "issuerCritical": 0,
          "tag": "issue",
          "value": "letsencrypt.org",
          "type": 257,
          "dclass": 1,
          "ttl": 60
        },
        {
          "issuerCritical": 0,
          "tag": "issue",
          "value": "globalsign.com",
          "type": 257,
          "dclass": 1,
          "ttl": 60
        }
      ]
    }
  ]
}

因此阿里云使用的免费DigiCert 证书颁发机构无法给我的域名颁发证书。


文章作者: Czq
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 !
评论
  目录