管理证书映射

本页面介绍如何创建和管理证书映射。

如需详细了解证书映射,请参阅 Certificate Manager 的工作原理

如需了解如何使用 Certificate Manager 部署证书,请参阅部署概览

如需详细了解本页面中使用的 gcloud 命令,请参阅 Certificate Manager CLI 参考文档

创建证书映射

如需创建证书映射,请完成本部分中的步骤。

如需完成此任务,您必须对目标 Google Cloud 项目拥有以下角色之一:

  • Certificate Manager Editor
  • Certificate Manager Owner

如需了解详情,请参阅角色和权限

gcloud

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

替换以下内容:

  • CERTIFICATE_MAP_NAME 是描述此证书映射的唯一名称。

Terraform

如需创建证书映射,您可以使用 google_certificate_manager_certificate_map 资源

resource "google_certificate_manager_certificate_map" "default" {
  name        = "${local.name}-certmap1-${random_id.tf_prefix.hex}"
  description = "${local.domain} certificate map"
  labels = {
    "terraform" : true
  }
}

如需了解如何应用或移除 Terraform 配置,请参阅基本 Terraform 命令

API

certificateMaps.create 方法发出 POST 请求,以创建证书映射,如下所示:

POST /v1/projects/PROJECT_ID/locations/global/certificateMaps?certificate_map_id=CERTIFICATE_MAP_NAME

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME 是描述此证书映射的唯一名称。

将证书映射附加到代理

创建证书映射并使用正确配置的证书映射条目填充它后,您必须将其附加到所需的代理。Certificate Manager 支持目标 HTTPS 代理和目标 SSL 代理。如需详细了解这些代理类型之间的差异,请参阅使用目标代理

如果存在直接附加到代理的现有 TLS (SSL) 证书,则代理会优先考虑证书映射引用的证书,而非直接附加的 TLS (SSL) 证书。

如需完成此任务,您必须拥有目标 Google Cloud 项目的 Editor 角色。

gcloud

gcloud compute PROXY_TYPE update PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME"

替换以下内容:

  • PROXY_TYPE 是目标代理的类型,支持的类型为:
    • 对于目标 HTTP 代理,请使用 target-https-proxies
    • 对于目标 SSL 代理,请使用 target-ssl-proxies
  • PROXY_NAME 是目标代理的名称。
  • CERTIFICATE_MAP_NAME 是证书映射的名称,该映射包含一个或多个引用所需证书的证书映射条目。

API

targetHttpsProxiestargetSslProxies 方法发出 POST 请求,以附加证书映射,如下所示:

POST /projects/PROJECT_ID/global/PROXY_TYPE/PROXY_NAME/setCertificateMap
{
  certificateMap: "//certificatemanager.googleapis.com/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME",
}

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • PROXY_TYPE 是目标代理的类型,支持的类型为:
    • 对于目标 HTTP 代理,请使用 targetHttpsProxies
    • 对于目标 SSL 代理,请使用 targetSslProxies
  • PROXY_NAME 是目标代理的名称。
  • CERTIFICATE_MAP_NAME 是证书映射的名称,该映射包含引用目标证书的证书映射条目。

从代理分离证书映射

如需从代理中分离证书映射,请完成本部分中的步骤。

请注意以下几点:

  • 如果有任何 TLS (SSL) 证书直接附加到代理,则分离证书映射会导致代理继续使用直接附加的 TLS (SSL) 证书。
  • 如果没有直接附加到代理的 TLS (SSL) 证书,则证书映射无法与该代理分离。您必须先将至少一个 TLS (SSL) 证书直接附加到代理,然后才能分离证书映射。

为完成此任务,您必须对目标 Google Cloud 项目拥有 Compute Load Balancer Admin 角色。

gcloud

gcloud compute PROXY_TYPE update PROXY_NAME \
    --clear-certificate-map

替换以下内容:

  • PROXY_TYPE 是目标代理的类型,支持的类型为:
    • 对于目标 HTTP 代理,请使用 target-https-proxies
    • 对于目标 SSL 代理,请使用 target-ssl-proxies
  • PROXY_NAME 是目标代理的名称。

API

使用空 certificateMap 值向 targetHttpsProxiestargetSslProxies 方法发出 POST 请求,以分离证书映射,如下所示:

POST /projects/PROJECT_ID/global/PROXY_TYPE/PROXY_NAME/setCertificateMap
{
  certificateMap: "",
}

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • PROXY_TYPE 是目标代理的类型,支持的类型为:
    • 对于目标 HTTP 代理,请使用 targetHttpsProxies
    • 对于目标 SSL 代理,请使用 targetSslProxies
  • PROXY_NAME 是目标代理的名称。

更新证书映射

如需更新证书映射的说明,请完成本部分中的步骤。

如需完成此任务,您必须对目标 Google Cloud 项目拥有以下角色之一:

  • Certificate Manager Editor
  • Certificate Manager Owner

如需了解详情,请参阅角色和权限

gcloud

gcloud certificate-manager maps update CERTIFICATE_MAP_NAME \
    --description="DESCRIPTION"
    --update-labels="LABELS"

替换以下内容:

  • CERTIFICATE_MAP_NAME 是目标证书映射的名称。
  • DESCRIPTION 是此证书映射的新说明。
  • LABELS 是应用于此证书映射的标签列表(以英文逗号分隔)。

API

certificateMaps.patch 方法发出 PATCH 请求,以更新证书映射,如下所示:

PATCH /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME?updateMask=labels,description"
{
  "description": "DESCRIPTION",
  "labels": {
    "LABEL_KEY": "LABEL_VALUE",
}

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME 是目标证书映射的名称。
  • DESCRIPTION 是此证书映射的新说明。
  • LABEL_KEY 是应用于此证书映射的标签键。
  • LABEL_VALUE 是应用于此证书映射的标签值。

列出证书映射

如需列出当前配置的证书映射,请完成本部分中的步骤。

如需完成此任务,您必须对目标 Google Cloud 项目拥有以下角色之一:

  • Certificate Manager Viewer
  • Certificate Manager Editor
  • Certificate Manager Owner

如需了解详情,请参阅角色和权限

gcloud

gcloud certificate-manager maps list \
    --filter="FILTER" \
    --page-size="PAGE_SIZE" \
    --limit="LIMIT" \
    --sort-by="SORT_BY"

替换以下内容:

  • FILTER 是一个表达式,用于将返回的结果限制为特定值。例如,您可以按以下条件过滤结果:

    • 标签和创建时间:--filter='labels.key:value AND create_time > "2021-09-01T00:00:00Z"'

    如需查看可与证书管理器搭配使用的更多过滤示例,请参阅 Cloud Key Management Service 文档中的对列表结果进行排序和过滤

  • PAGE_SIZE 是每页返回的结果数。

  • LIMIT 是要返回的结果数上限。

  • SORT_BY 是以英文逗号分隔的 name 字段列表,系统将按照这些字段对返回的结果进行排序。默认排序顺序是升序;对于降序排序顺序,请为所需字段添加 ~ 前缀。

API

certificateMaps.list 方法发出 LIST 请求,以列出已配置的证书映射,如下所示:

GET /v1/projects/PROJECT_ID/locations/global/certificateMaps?filter=FILTER&pageSize=PAGE_SIZE&sortBy=SORT_BY

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • FILTER 是一个表达式,用于将返回的结果限制为特定值。
  • PAGE_SIZE 是每页返回的结果数。
  • SORT_BY 是以英文逗号分隔的字段名称列表,按这些名称对返回的结果进行排序。默认排序顺序是升序;对于降序排序顺序,请为所需字段添加 ~ 前缀。

查看证书映射的状态

如需查看证书映射的状态,请完成本部分中的步骤。

如需完成此任务,您必须对目标 Google Cloud 项目拥有以下角色之一:

  • Certificate Manager Viewer
  • Certificate Manager Editor
  • Certificate Manager Owner

如需了解详情,请参阅角色和权限

gcloud

gcloud certificate-manager maps describe CERTIFICATE_MAP_NAME

替换以下内容:

  • CERTIFICATE_MAP_NAME 是目标证书映射的名称。

API

certificateMaps.get 方法发出 GET 请求,以查看证书映射的状态,如下所示:

  GET /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME 是目标证书映射的名称。

删除证书映射

如需删除证书映射,请完成本部分中的步骤。在删除证书映射之前,您必须先将其与其目标代理分离

如果有任何证书映射条目分配给要删除的映射,您必须先手动删除它们,然后才能删除映射;否则,映射删除失败。

如需完成此任务,您必须拥有目标 Google Cloud 项目的 Certificate Manager Owner 角色。

如需了解详情,请参阅角色和权限

gcloud

gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME

替换以下内容:

  • CERTIFICATE_MAP_NAME 是目标证书映射的名称。

API

certificateMaps.delete 方法发出 DELETE 请求,以删除证书映射,如下所示:

  DELETE /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME

替换以下内容:

  • PROJECT_ID 是目标 Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME 是目标证书映射的名称。

后续步骤