本教程介绍了如何使用证书管理器部署全球自行管理的证书。
以下负载平衡器支持全球自行管理的证书:
- 全球外部应用负载均衡器
- 传统应用负载均衡器
- 全球外部代理网络负载均衡器
- 传统代理网络负载均衡器
如果您想部署到区域级或跨区域负载平衡器,请参阅以下内容:
将自行管理的证书上传到 Certificate Manager
如需将证书上传到 Certificate Manager,请执行以下操作:
控制台
在 Google Cloud 控制台中,前往 Certificate Manager 页面。
在证书标签页上,点击添加证书。
在证书名称字段中,输入证书的唯一名称。
可选:在说明字段中,输入证书的说明。通过说明,您可以识别证书。
在位置部分,选择全球。
对于范围,选择默认。
在证书类型部分,选择创建自行管理的证书。
对于证书字段,请执行以下任一操作:
- 点击上传按钮,然后选择您的 PEM 格式的证书文件。
- 复制并粘贴 PEM 格式证书的内容。内容必须以
-----BEGIN CERTIFICATE-----
开头,并以-----END CERTIFICATE-----
结尾。
对于私钥证书字段,请执行以下任一操作:
- 点击上传按钮,然后选择您的私钥。您的私钥必须采用 PEM 格式,且不受密码保护。
- 复制并粘贴 PEM 格式的私钥内容。私钥必须以
-----BEGIN PRIVATE KEY-----
开头,并以-----END PRIVATE KEY-----
结尾。
在标签字段中,指定要与证书关联的标签。如需添加标签,请点击
添加标签,并为标签指定键和值。点击创建。
新证书会显示在证书列表中。
gcloud
如需创建全球自行管理的证书,请使用 certificate-manager certificates create
命令:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --certificate-file="CERTIFICATE_FILE" \ --private-key-file="PRIVATE_KEY_FILE"
替换以下内容:
CERTIFICATE_NAME
:证书的名称。CERTIFICATE_FILE
:CRT 证书文件的路径和文件名。PRIVATE_KEY_FILE
:KEY 私钥文件的路径和文件名。
Terraform
如需上传自行管理的证书,您可以使用包含 self_managed
代码块的 google_certificate_manager_certificate
资源。
API
通过向 certificates.create
方法发出 POST
请求来上传证书,如下所示:
POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME { self_managed: { pem_certificate: "PEM_CERTIFICATE", pem_private_key: "PEM_KEY", } }
替换以下内容:
PROJECT_ID
: Google Cloud 项目的 ID。CERTIFICATE_NAME
:证书的名称。PEM_CERTIFICATE
:证书 PEM。PEM_KEY
:密钥 PEM。
将自行管理的证书部署到负载均衡器
如需部署自行管理的全球证书,请使用证书映射。
创建证书映射
创建引用与证书关联的证书映射条目的证书映射:
gcloud
如需创建证书映射,请使用 gcloud certificate-manager maps create
命令:
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
将 CERTIFICATE_MAP_NAME
替换为目标证书映射的名称。
Terraform
如需创建证书映射,您可以使用 google_certificate_manager_certificate_map
资源。
创建证书映射条目
创建证书映射条目,并将其与您的证书和证书映射相关联:
gcloud
如需创建证书映射条目,请使用 gcloud certificate-manager maps entries create
命令:
gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME" \ --certificates="CERTIFICATE_NAME" \ --hostname="HOSTNAME"
替换以下内容:
CERTIFICATE_MAP_ENTRY_NAME
:证书映射条目的名称。CERTIFICATE_MAP_NAME
:证书映射条目所附加到的证书映射的名称。CERTIFICATE_NAME
:要与证书映射条目关联的证书的名称。HOSTNAME
:您要与证书映射条目相关联的主机名。如果您想创建涵盖通配符网域和根网域的证书,请指定包含根网域和通配符的 hostname,例如
example.com
和*.example.com
。此外,您还必须指定两个证书映射条目,一个用于example.com
,另一个用于*.example.com
。
Terraform
如需创建包含根网域的证书映射条目,请使用 google_certificate_manager_certificate_map_entry
资源。
如需创建包含通配符网域的证书映射条目,请使用 google_certificate_manager_certificate_map_entry
资源。
验证证书映射条目是否处于有效状态
在将相应的证书映射关联到目标代理之前,请验证证书映射条目是否处于活跃状态。
如需验证证书映射条目,请使用 gcloud certificate-manager maps entries describe
命令:
gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
替换以下内容:
CERTIFICATE_MAP_ENTRY_NAME
:证书映射条目的名称。CERTIFICATE_NAME
:要与证书映射条目关联的证书的名称。
输出类似于以下内容:
certificates: createTime: '2021-09-06T10:01:56.229472109Z' hostname: example.com name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry state: ACTIVE updateTime: '2021-09-06T10:01:58.277031787Z'
将证书映射附加到目标代理
您可以将证书映射附加到新的目标代理或现有目标代理。
gcloud
如需将证书映射附加到新的目标代理,请使用 gcloud compute target-https-proxies create
命令:
gcloud compute target-https-proxies create PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --url-map="URL_MAP" \ --global
替换以下内容:
PROXY_NAME
:目标代理的名称。CERTIFICATE_MAP_NAME
:引用证书映射条目和关联证书的证书映射的名称。URL_MAP
:网址映射的名称
如需将证书映射附加到现有目标 HTTPS 代理,请使用 gcloud compute target-https-proxies update
命令。如果您不知道现有目标代理的名称,请前往目标代理页面,并记下目标代理的名称。
gcloud compute target-https-proxies update PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --global
创建或更新目标代理后,运行以下命令进行验证:
gcloud compute target-https-proxies list
Terraform
如需将证书映射附加到目标代理,您可以使用 google_compute_target_https_proxy
资源。
配置目标代理时,如果您直接附加 TLS (SSL) 证书,同时也通过证书映射附加 TLS (SSL) 证书,则代理会使用证书映射引用的证书,并忽略直接附加的 TLS (SSL) 证书。
清理
为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除这些资源。
删除负载均衡器及其资源。
请参阅清理负载均衡设置。
从代理中删除或分离证书映射。
如需删除证书映射,请运行以下命令:
gcloud compute target-https-proxies delete PROXY_NAME
如果您想保留目标 HTTPS 代理,请从该代理中分离证书映射。
- 如果任何 TLS (SSL) 证书直接附加到代理,那么分离证书映射会导致代理恢复使用这些直接附加的 TLS (SSL) 证书。
- 如果没有直接附加到代理的 TLS (SSL) 证书,则无法从代理分离证书映射。您必须先将至少一个 TLS (SSL) 证书直接附加到代理,然后才能分离证书映射。
如需分离证书映射,请运行以下命令:
gcloud compute target-https-proxies update PROXY_NAME \ --clear-certificate-map
将
PROXY_NAME
替换为目标代理的名称。从证书映射中删除证书映射条目:
gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
替换以下内容:
CERTIFICATE_MAP_ENTRY_NAME
:证书映射条目的名称。CERTIFICATE_MAP_NAME
:证书映射的名称。
删除证书映射:
gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
将
CERTIFICATE_MAP_NAME
替换为证书映射的名称。删除已上传的证书:
gcloud certificate-manager certificates delete CERTIFICATE_NAME
将
CERTIFICATE_NAME
替换为证书的名称。