GCP创建泛域名证书(域名托管在CloudFlare)

云端教程5天前更新 huiye
20 0

文章目录

背景

域名托管在 CloudFlare ,且启用了通用 SSL 的情况下(如下图),CloudFlare 会有一条记录名称为_acme-challenge 的 TXT 记录,GCP申请证书默认使用的 DNS 验证方式为 FIXED_RECORD,此方式也会要求添加一条记录名称为 _acme-challenge 的 CNAME 记录,此时会和 CloudFlare 的 TXT 记录冲突,导致证书下发失败。本文记录一种解决该问题的方案

操作步骤

使用 Cloud Shell 创建 DNS 认证域

gcloud certificate-manager dns-authorizations create [AUTHNAME] --domain=["xxx.com"] --type=PER_PROJECT_RECORD

注意:

  • [AUTHNAME] 替换为自定义的 DNS 认证域名称
  • [“xxx.com”] 替换为需要申请证书的主域名
  • –type为 PER_PROJECT_RECORD 时,CNAME记录是个随机字符串
  • type 的默认类型为 FIXED_RECORD 时,CNAME记录为固定的 _acme-challenge ,会和 CloudFlare 的 TXT 记录冲突,导致证书DNS验证失败。所以创建 DNS 认证域时,需要指定 type为 PER_PROJECT_RECORD

使用 Cloud Shell 查看DNS认证域

gcloud certificate-manager dns-authorizations describe [AUTHNAME]

根据上面创建的认证域,去 CloudFlare 添加 CNAME 记录,代理状态为 仅DNS

注:

  • [AUTHNAME] 设置为创建的 DNS 认证域名称

添加CNAME解析后创建证书

gcloud certificate-manager certificates create [SSLNAME] --domains=[xxx.com,*.xxx.com] --dns-authorizations=[AUTHNAME]

注:

  • [SSLNAME]  替换为自定义证书名称
  • [xxx.com,*.xxx.com] 替换为需要申请证书的域名
  • 如果创建的证书是需要给 mediaCDN 使用的,需要在创建证书的命令上增加一个参数 –scope=EDGE_CACHE 否则无法在 mediaCDN 处选择该证书

等待10~20分钟,控制台上可以查看是否下发成功

–type 即对应控制台上的授权类型

参考文档:

部署具有 DNS 授权的全球 Google 代管的证书  |  Certificate Manager  |  Google Cloud

Google 管理的证书的网域授权类型  |  Certificate Manager  |  Google Cloud

© 版权声明

相关文章