管理证书映射

证书映射会引用一个或多个证书映射条目,以将特定证书分配给特定主机名。本页介绍了如何创建和管理证书映射。

如需了解详情,请参阅证书映射

创建证书映射

您可以创建证书映射,以引用与证书关联的证书映射条目。

如需执行此任务,您必须在目标 Google Cloud 项目中拥有以下某个 IAM 角色。

  • Certificate Manager Editor 角色 (roles/certificatemanager.editor)
  • Certificate Manager Owner 角色 (roles/certificatemanager.owner)

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

如需创建证书映射,请使用 gcloud certificate-manager maps create 命令

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

替换以下内容:

  • CERTIFICATE_MAP_NAME:证书映射的名称。

如需创建证书映射,请向 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:证书映射的名称。

如需创建证书映射,您可以使用 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 命令

将证书映射附加到代理

使用证书映射条目创建并配置证书映射后,将证书映射附加到目标代理。Certificate Manager 支持全球范围的目标 HTTPS 代理和目标 SSL 代理。如需详细了解这些代理类型之间的差异,请参阅使用目标代理

如果您将 TLS (SSL) 证书附加到目标代理,同时还通过证书映射附加证书,则代理会使用证书映射中引用的证书,并忽略直接附加的证书。

如需执行此任务,您必须在目标 Google Cloud 项目中拥有以下某个 IAM 角色。

  • Certificate Manager Editor 角色 (roles/certificatemanager.editor)

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

gcloudAPI

如需将证书映射附加到目标 HTTPS 代理,请使用 gcloud compute target-https-proxies update 命令

gcloud compute target-https-proxies update PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME"

如需将证书映射附加到目标 SSL 代理,请使用 gcloud compute target-ssl-proxies update 命令

gcloud compute target-ssl-proxies update PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME"

替换以下内容:

  • PROXY_NAME:目标代理的名称。
  • CERTIFICATE_MAP_NAME:包含引用目标证书的证书映射条目的证书映射的名称。

如需将证书映射附加到目标 HTTPS 代理,请向 targetHttpsProxies 方法发出 POST 请求:

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

如需将证书映射附加到目标 SSL 代理,请向 targetSslProxies 方法发出 POST 请求:

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

替换以下内容:

  • PROJECT_ID:Google Cloud 项目的 ID。
  • PROXY_NAME:目标代理的名称。
  • CERTIFICATE_MAP_NAME:包含引用目标证书的证书映射条目的证书映射的名称。

将证书映射与代理分离

在将证书映射与代理分离之前,请注意以下事项:

  • 如果任何 TLS (SSL) 证书直接附加到代理,则解除证书映射会导致代理恢复使用这些证书。

  • 如果没有 TLS (SSL) 证书直接附加到代理,则无法分离证书映射。请先将至少一个 TLS 证书直接附加到代理,然后再分离证书映射。

如需执行此任务,您必须在目标 Google Cloud 项目中拥有以下某个 IAM 角色。

  • Compute Load Balancer Admin 角色 (roles/compute.loadBalancerAdmin)

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

gcloudAPI

如需将任何已附加的证书映射与目标 HTTPS 代理分离,请使用 gcloud compute target-https-proxies update 命令

gcloud compute target-https-proxies update PROXY_NAME \
    --clear-certificate-map

如需将任何已附加的证书映射与目标 SSL 代理分离,请使用 gcloud compute target-ssl-proxies update 命令

gcloud compute target-ssl-proxies update PROXY_NAME \
    --clear-certificate-map

替换以下内容:

  • PROXY_NAME:目标代理的名称。

如需将任何已附加的证书映射与目标 HTTPS 代理分离,请向 targetHttpsProxies 方法发出 POST 请求:

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

如需将任何已附加的证书映射与目标 SSL 代理分离,请向 targetSslProxies 方法发出 POST 请求:

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

替换以下内容:

  • PROJECT_ID:Google Cloud 项目的 ID。
  • PROXY_NAME:目标代理的名称。

更新证书映射

您可以更新证书映射的说明和标签。

如需执行此任务,您必须在目标 Google Cloud 项目中拥有以下某个 IAM 角色。

  • Certificate Manager Editor 角色 (roles/certificatemanager.editor)
  • Certificate Manager Owner 角色 (roles/certificatemanager.owner)

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

gcloudAPI

如需更新证书映射,请使用 gcloud certificate-manager maps update 命令

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

替换以下内容:

  • CERTIFICATE_MAP_NAME:证书映射的名称。
  • DESCRIPTION:此证书映射的新说明。
  • LABELS:应用于此证书映射的标签的逗号分隔列表。

如需更新证书映射,请向 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 项目中拥有以下某个 IAM 角色。

  • Certificate Manager Viewer 角色 (roles/certificatemanager.viewer)
  • Certificate Manager Editor 角色 (roles/certificatemanager.editor)
  • Certificate Manager Owner 角色 (roles/certificatemanager.owner)

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

gcloudAPI

如需列出证书映射,请使用 gcloud certificate-manager maps list 命令

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 字段的英文逗号分隔列表。默认排序顺序为升序;如需降序排序,请在字段前面加上波浪号 (~)。

如需列出已配置的证书映射,请向 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:用于将返回的结果限制为特定值的表达式。

    例如,如需按标签和创建时间过滤结果,您可以指定:--filter='labels.key:value AND create_time > "2021-09-01T00:00:00Z"'

    如需查看可与 Certificate Manager 搭配使用的更多过滤示例,请参阅 Cloud Key Management Service 文档中的对列表结果进行排序和过滤部分。

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

  • SORT_BY:用于对返回结果进行排序的 name 字段的英文逗号分隔列表。默认排序顺序为升序;如需降序排序,请在字段前面加上波浪号 (~)。

查看证书映射的详细信息

您可以查看现有证书映射的详细信息,例如其创建日期时间和上次更新日期时间。

如需执行此任务,您必须在目标 Google Cloud 项目中拥有以下某个 IAM 角色。

  • Certificate Manager Viewer 角色 (roles/certificatemanager.viewer)
  • Certificate Manager Editor 角色 (roles/certificatemanager.editor)
  • Certificate Manager Owner 角色 (roles/certificatemanager.owner)

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

gcloudAPI

如需查看证书映射的状态,请使用 gcloud certificate-manager maps describe 命令

gcloud certificate-manager maps describe CERTIFICATE_MAP_NAME

替换以下内容:

  • CERTIFICATE_MAP_NAME:证书映射的名称。

如需查看证书映射的详细信息,请向 certificateMaps.get 方法发出 GET 请求:

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

替换以下内容:

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

删除证书映射

在删除证书映射之前,请执行以下操作:

如需执行此任务,您必须在目标 Google Cloud 项目中拥有以下某个 IAM 角色。

  • Certificate Manager Owner 角色 (roles/certificatemanager.owner)

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

gcloudAPI

如需删除证书映射,请使用 gcloud certificate-manager maps delete 命令

gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME

替换以下内容:

  • CERTIFICATE_MAP_NAME:证书映射的名称。

如需删除证书映射,请向 certificateMaps.delete 方法发出 DELETE 请求:

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

替换以下内容:

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

后续步骤