管理证书映射条目

证书映射条目可将证书与目标主机名和目标证书映射相关联。本页介绍了如何创建和管理证书映射条目。

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

创建证书映射条目

您可以创建证书映射条目,并最多将 4 个证书与其相关联。为主机名指定多个证书时,我们建议您为每个证书使用不同的密钥算法。例如,您可以为一个证书使用 ECDSA,为另一个证书使用 RSA。在将自行管理的证书迁移到 Google 管理的证书时,将多个证书与单个证书映射条目相关联也会很有帮助。

如需将多个证书与证书映射条目相关联,请提供以英文逗号分隔的证书名称列表。对于每个子网域,您都必须创建单独的证书映射条目。

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

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

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

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

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAMES" \
    --hostname="HOSTNAME"

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。
  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。
  • CERTIFICATE_NAMES:您要与此证书映射条目关联的证书名称的逗号分隔列表。
  • HOSTNAME:您要与证书映射条目关联的主机名。

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

POST /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME/certificateMapEntries?certificate_map_entry_id=CERTIFICATE_MAP_ENTRY_NAME"
{
 hostname: "HOSTNAME"
 certificates: ["projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME1","projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME2"]
}

替换以下内容:

  • PROJECT_ID:Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。
  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。
  • HOSTNAME:您要与证书映射条目关联的主机名。
  • CERTIFICATE_NAME1:您要与此证书映射条目关联的第一个证书的名称。
  • CERTIFICATE_NAME2:您要与此证书映射条目关联的第二个证书的名称。

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

resource "google_certificate_manager_certificate_map_entry" "default" {
  name        = "${local.name}-first-entry-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.default.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.default.id]
  hostname     = local.domain
}

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

如需了解负载平衡器如何在握手期间选择证书,请参阅证书选择逻辑

创建主证书映射条目

如果客户端未提供主机名,或者负载平衡器无法将主机名与配置的证书映射条目进行匹配,您可以为负载平衡器指定主证书。

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

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

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

gcloudAPI

如需创建主证书映射条目,请使用带有 set-primary 标志的 gcloud certificate-manager maps entries create 命令

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAMES" \
    --set-primary

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。
  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。
  • CERTIFICATE_NAMES:您要与此证书映射条目关联的证书名称的逗号分隔列表。

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

POST /v1/projects/PROJECT_ID/locations/global/certificateMaps/CERTIFICATE_MAP_NAME/certificateMapEntries?certificate_map_entry_id=CERTIFICATE_MAP_ENTRY_NAME"
{
   matcher: "PRIMARY",
   certificates: ["projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME1","projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME2"]
}

替换以下内容:

  • PROJECT_ID:Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。
  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。
  • CERTIFICATE_NAME1:您要与主证书映射条目关联的第一个证书的名称。
  • CERTIFICATE_NAME2:您要与主证书映射条目关联的第二个证书的名称。

如需了解负载平衡器如何在握手期间选择证书,请参阅证书选择逻辑

更新证书映射条目

更新证书映射条目时,您可以执行以下操作:

  • 分配或取消分配证书
  • 修改说明
  • 修改标签

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

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

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

gcloudAPI

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

gcloud certificate-manager maps entries update CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAME,CERTIFICATE_NAME" \
    --description="DESCRIPTION" \
    --update-labels="LABELS"

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。
  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。
  • CERTIFICATE_NAME:您要与证书映射条目关联的证书的名称。
  • DESCRIPTION:此证书映射条目的有意义的说明。
  • LABELS:应用于此证书映射条目的标签列表。

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

PATCH  /v1/projects/example-project/locations/global/certificateMaps/CERTIFICATE_MAP_NAME/certificateMapEntries/CERTIFICATE_MAP_ENTRY_NAME?updateMask=labels,description,certificates
{
  "certificates": ["projects/PROJECT_ID/locations/global/certificates/CERTIFICATE_NAME"],
  "description": "DESCRIPTION",
  "labels": { "LABEL_KEY": "LABEL_VALUE" }
}

替换以下内容:

  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。
  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。
  • PROJECT_ID:Google Cloud 项目的 ID。
  • CERTIFICATE_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 entries list --map=CERTIFICATE_MAP_NAME \
    --filter="FILTER" \
    --page-size="PAGE_SIZE" \
    --limit="LIMIT" \
    --sort-by="SORT_BY"

替换以下内容:

  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。
  • FILTER:用于将返回的结果限制为特定值的表达式。

    例如,您可以按以下条件过滤结果:

    • 投放状态:--filter='state=ACTIVE'
    • 匹配函数(设为主要匹配函数):--filter='-matcher=PRIMARY'
    • 主机名:--filter='hostname=example.com'
    • 分配的证书:--filter='certificates:my-cert'
    • 标签和创建时间:--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.certificateMapEntries.list 方法发出 LIST 请求,以列出给定证书映射中配置的证书映射条目,如下所示:

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

替换以下内容:

  • PROJECT_ID:Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME:目标证书映射的名称。
  • FILTER:用于将返回的结果限制为特定值的表达式。

    例如,您可以按以下条件过滤结果:

    • 投放状态:--filter='state=ACTIVE'
    • 匹配函数(设为主要匹配函数):--filter='-matcher=PRIMARY'
    • 主机名:--filter='hostname=example.com'
    • 分配的证书:--filter='certificates:my-cert'
    • 标签和创建时间:--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 entries describe CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME"

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。
  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。

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

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

替换以下内容:

  • PROJECT_ID:Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。
  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。

删除证书映射条目

删除证书映射条目会将与证书映射条目关联的证书从目标代理中分离。删除证书映射条目不会从 Google Cloud中删除关联的证书。您必须手动删除这些证书

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

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

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

gcloudAPI
gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME"

替换以下内容:

  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。
  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。

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

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

替换以下内容:

  • PROJECT_ID:Google Cloud 项目的 ID。
  • CERTIFICATE_MAP_NAME:证书映射条目关联到的证书映射的名称。
  • CERTIFICATE_MAP_ENTRY_NAME:证书映射条目的名称。

后续步骤