Certificate Manager:证书、绑定与续期

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。

Google-managed TLS;此页命令示例使用 global ALB certificate map。

推荐做法#

  • DNS authorization 记录保留用于续期;证书签发后再切流。
  • Global ALB 用 certificate map;Regional ALB 用同 Region 的 Certificate Manager certificate,直接附加 target HTTPS proxy,见 Regional 配置。
  • 同时验证域名解析、ACTIVE 状态、proxy 绑定和客户端 TLS 校验。

常用操作#

替换为实际资源;本段不依赖 lab.env。

PROJECT_ID='REPLACE_PROJECT_ID'
CERTIFICATE='REPLACE_CERTIFICATE'

gcloud certificate-manager certificates describe "$CERTIFICATE" \
  --project="$PROJECT_ID" --location=global

容易踩的坑#

  • Compute SSL certificate 与 Certificate Manager 资源不是同一种,命令不能混用。

证书 ACTIVE 不代表入口已使用它。 还要核对 target proxy 绑定和客户端 TLS;删除旧证书前先绑定有效替代。

配置说明与完整示例(按需展开)

类似 AWS ACM 的证书管理能力。前置:已委派的公共区域和HTTPS LB的 lab-https,DOMAIN 为自有主机名。需要 Certificate Manager Editor、DNS 管理及目标代理更新权限。

Certificate Manager是管理 TLS 证书的托管服务;DNS authorization用一条指定的 DNS 记录证明域名控制权;certificate map 根据请求的主机名选择证书并供支持它的目标代理使用。本篇是全局 ALB 的 map 路径,区域型 ALB 使用适用证书直接绑定目标代理,不能照搬 map 配置。

DNS 验证与证书#

source lab.env
gcloud services enable certificatemanager.googleapis.com
gcloud certificate-manager dns-authorizations create lab-auth --domain="$DOMAIN" --location=global
gcloud certificate-manager dns-authorizations describe lab-auth --location=global --format=json > dns-auth.json
export AUTH_NAME=$(jq -r '.dnsResourceRecord.name' dns-auth.json)
export AUTH_DATA=$(jq -r '.dnsResourceRecord.data' dns-auth.json)
gcloud dns record-sets create "$AUTH_NAME" --zone=lab-public --type=CNAME --ttl=300 --rrdatas="$AUTH_DATA"
gcloud certificate-manager certificates create lab-managed-cert --location=global --domains="$DOMAIN" --dns-authorizations=lab-auth
gcloud certificate-manager certificates describe lab-managed-cert --location=global --format='yaml(managed)'

等待 ACTIVE;若长期未成功,检查权威 NS 的验证 CNAME、CAA 和域名拼写。DNS 验证可在业务 A 记录切换前完成;保留 CNAME 供后续续期。官方流程

绑定到 HTTPS 代理#

gcloud certificate-manager maps create lab-cert-map
gcloud certificate-manager maps entries create lab-cert-entry --map=lab-cert-map --hostname="$DOMAIN" --certificates=lab-managed-cert
gcloud compute target-https-proxies update lab-https --global --certificate-map="//certificatemanager.googleapis.com/projects/$PROJECT_ID/locations/global/certificateMaps/lab-cert-map"
curl --fail "https://$DOMAIN/"

验收:域名解析正确、TLS 主机名验证通过、应用返回 200。证书 map 绑定后优先使用 map 的证书;原 Compute SSL certificate 不自动变成 Certificate Manager 资源。证书部署

回滚与清理#

本实验保留 LB 篇的 lab-cert。先切回原证书,再删除 map,避免在线入口没有可用证书:

gcloud compute target-https-proxies update lab-https --clear-certificate-map --global
gcloud compute target-https-proxies describe lab-https --format='value(sslCertificates)' --global
curl --fail "https://$DOMAIN/"
gcloud certificate-manager maps entries delete lab-cert-entry --map=lab-cert-map
gcloud certificate-manager maps delete lab-cert-map
gcloud certificate-manager certificates delete lab-managed-cert --location=global
gcloud dns record-sets delete "$AUTH_NAME" --zone=lab-public --type=CNAME
gcloud certificate-manager dns-authorizations delete lab-auth --location=global
rm dns-auth.json

如果代理没有原证书,先绑定有效替代证书,或先删除专用 LB,再清理 Certificate Manager。

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭