管理资源

通过 Certificate Authority Service 创建的证书授权机构 (CA) 依赖于两种次级资源类型:

  • Cloud Key Management Service 密钥版本,用于对 CA 签发的证书和证书撤消列表 (CRL) 进行签名。如需详细了解密钥版本,请参阅密钥版本
  • 一个 Cloud Storage 存储桶,用于托管 CA 证书以及 CA 发布的任何 CRL(如果启用了这些设置)。如需详细了解 Cloud Storage 存储分区,请参阅存储分区

每个 CA 都必须具有这两个资源,并且在 CA 创建后无法更改。

管理模型

CA Service 针对这些资源支持两种生命周期管理模式:

  • 由 Google 管理
  • 由客户管理

Cloud KMS 密钥和 Cloud Storage 存储桶无需使用相同的管理模式。例如,Cloud KMS 密钥可以由 Google 管理,Cloud Storage 存储桶可以由客户管理,反之亦然。

由 Google 管理

CA 服务会在创建 CA 时按照此模型自动创建和配置资源,并在删除 CA 时删除这些资源。您无需为这些资源单独付费。

默认情况下,新的 CA 使用 Google 管理的 Cloud KMS 密钥和 Cloud Storage 存储分区。在创建 CA 时,您可以为 Google 管理的 Cloud KMS 密钥选择特定的密钥算法。Google 管理的 Cloud KMS 密钥不会在多个 CA 之间重复使用。

如需了解如何创建根 CA,请参阅创建根 CA。 如需了解如何创建从属 CA,请参阅创建从属 CA。如需有关选择密钥算法的指导,请参阅选择密钥算法

由客户管理

您只能为企业层级中的 CA 创建客户管理的资源。您必须先创建和配置客户管理的资源,然后才能创建 CA。此外,您必须在 CA 被销毁后适时删除这些资源。系统会直接向用户收取这些资源的费用。

CA 服务会将该项目视为客户管理的 Cloud KMS 密钥的安全边界。例如,假设用户 Alice 使用客户管理的 Cloud KMS 密钥在项目 test 中创建了 CA。然后,另一位用户 Bob 可以使用同一 Cloud KMS 密钥在同一项目中创建另一个 CA。虽然 Alice 需要对密钥拥有管理员访问权限才能创建第一个 CA,但 Bob 无需对该密钥拥有任何访问权限,因为 Alice 已在项目 test 中启用 CA Service 对该密钥的使用。

创建客户管理的资源的好处

这种模型的一个优势是,调用方可以直接控制这些资源。调用方可以直接更新访问权限管理等属性,以满足其组织要求。

若要使用客户管理的资源创建 CA,调用方必须对这些资源拥有管理员权限,才能向 CA 服务授予适当的访问权限。如需了解详情,请参阅 CA 服务服务代理

Cloud KMS 密钥的位置

您必须在 CA 服务资源所在的位置创建客户管理的 Cloud KMS 密钥。如需查看 CA 服务位置的完整列表,请参阅位置。如需查看可创建 Cloud KMS 资源的位置列表,请参阅 Cloud KMS 位置

Cloud Storage 存储分区的位置

您必须在与 CA 服务资源大致相同的位置创建客户管理的 Cloud Storage 存储分区。您无法在创建 CA 服务资源所在的大陆之外创建 Cloud Storage 存储桶。

例如,如果您的 CA 位于 us-west1,您可以在美国的任何单区域(例如 us-west1us-east1)、双区域 NAM4 和多区域 US 中创建 Cloud Storage 存储分区。

如需查看可创建 Cloud Storage 资源的位置列表,请参阅 Cloud Storage 位置

对受管资源的访问权限

默认情况下,只要拥有托管在 Cloud Storage 存储桶上的 CA 证书的网址或 CA 发布的任何 CRL,任何人都可以访问这些资源。如需防止公众访问您的 CA 证书和 CRL,请将包含 CA 池的项目添加到 VPC Service Controls 边界

将包含 CA 池的项目添加到 VPC Service Controls 边界后,Google 管理的 Cloud Storage 存储桶便会加入该边界。VPC Service Controls 边界可确保 Cloud Storage 存储桶无法从已获批准的网络之外访问。

网络边界内的客户端仍可在无需身份验证的情况下访问 CRL 和 CA 证书。来自已获批准网络以外的访问请求会失败。

CA 证书和 CRL 的基于 HTTP 的网址

基于 HTTP 的网址上提供 CA 证书和 CRL 的原因如下:

  • 客户端不应直接信任在 Cloud Storage 存储桶中发布的 CA 证书。CA 证书是证书链的一部分,该链从根 CA 的证书开始。证书链中的每个证书都由链中更高级别的 CA 证书签名,以确保证书的完整性。因此,使用 HTTPS 协议没有额外的好处。

  • 某些客户端在验证证书时会拒绝基于 HTTPS 的网址。

为 CA 池中的 CA 启用 CA 证书和 CRL 发布

默认情况下,当您创建新的 CA 池时,CA 服务会启用将 CA 证书和 CRL 发布到 Cloud Storage 存储分区的功能。如果您在创建 CA 池时停用了 CA 证书和 CRL 发布功能,现在想启用它们,可以按照本部分中的说明操作。

如需为 CA 池中的所有 CA 启用 CA 证书发布和 CRL 发布,请执行以下操作:

控制台

  1. 前往 Google Cloud 控制台中的 Certificate Authority Service 页面。

    前往 Certificate Authority Service

  2. CA 池管理器标签页下,点击要修改的 CA 池的名称。

  3. CA 池页面上,点击 修改

    使用 Cloud 控制台修改现有 CA 池。

  4. 配置允许的密钥算法和大小下,点击下一步

  5. 配置接受的证书请求方法下,点击下一步

  6. 配置发布选项下,点击将 CA 证书发布到此池中 CA 专用的 Cloud Storage 存储桶对应的开关。

  7. 点击将 CRL 发布到此池中 CA 专用的 Cloud Storage 存储桶对应的切换开关。

gcloud

运行以下命令:

gcloud privateca pools update POOL_ID --publish-crl --publish-ca-cert

POOL_ID 替换为 CA 池的名称。

如果您启用 --publish-ca-cert,CA 服务会将每个 CA 的 CA 证书写入 Cloud Storage 存储桶,其路径在 CA 资源中指定。所有已颁发证书中的 AIA 扩展都指向包含 CA 证书的 Cloud Storage 对象网址。所有已颁发证书中的 CRL 分发点 (CDP) 扩展都指向包含 CRL 的 Cloud Storage 对象网址。

如需详细了解 gcloud privateca pools update 命令,请参阅 gcloud privateca pools update

如需详细了解如何为撤消证书启用 CRL 发布功能,请参阅撤消证书

为 CA 池中的 CA 停用 CA 证书和 CRL 发布

如需为 CA 池中的所有 CA 停用 CA 证书发布或 CRL 发布,请执行以下操作:

控制台

  1. 前往 Google Cloud 控制台中的 Certificate Authority Service 页面。

    前往 Certificate Authority Service

  2. CA 池管理器标签页下,点击要修改的 CA 池的名称。

  3. CA 池页面上,点击 修改

  4. 配置允许的密钥算法和大小下,点击下一步

  5. 配置接受的证书请求方法下,点击下一步

  6. 配置发布选项下,点击将 CA 证书发布到此池中 CA 专用的 Cloud Storage 存储桶对应的开关。

  7. 点击将 CRL 发布到此池中 CA 专用的 Cloud Storage 存储桶对应的切换开关。

gcloud

运行以下命令:

gcloud privateca pools update POOL_ID --no-publish-crl --no-publish-ca-cert

POOL_ID 替换为 CA 池的名称。

停用分发点不会删除 Cloud Storage 存储桶或其权限,也不会移除已托管在该存储分区中的任何 CA 证书或 CRL。不过,这意味着未来的 CRL 将不再发布到 Cloud Storage 存储桶,未来的证书也不会包含 AIA 和 CDP 扩展。

更新已发布 CA 证书和 CRL 的编码格式

如需更新已发布的 CA 证书和 CRL 的编码格式,请执行以下操作:

控制台

  1. 前往 Google Cloud 控制台中的 Certificate Authority Service 页面。

    前往 Certificate Authority Service

  2. CA 池管理器标签页下,点击要修改的 CA 池的名称。

  3. CA 池页面上,点击 修改

  4. 配置允许的密钥算法和大小下,点击下一步

  5. 配置接受的证书请求方法下,点击下一步

  6. 配置发布选项下,点击发布编码格式对应的下拉菜单。

  7. 选择发布编码格式。

gcloud

运行以下命令:

gcloud privateca pools update POOL_ID --publishing-encoding-format=PUBLISHING_ENCODING_FORMAT

替换以下内容:

  • POOL_ID:CA 池的名称。
  • PUBLISHING_ENCODING_FORMATPEMDER

如需详细了解 gcloud privateca pools update 命令,请参阅 gcloud privateca pools update

后续步骤