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。