管理证书映射

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

如需详细了解证书映射,请参阅 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 项目的编辑者角色。

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

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

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) 然后才能分离证书映射。

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

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"'

    如需查看可在 Certificate Manager 中使用的更多过滤示例,请参阅 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 项目。

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

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 是目标证书映射的名称。

后续步骤