创建从属证书授权机构
本页面介绍了如何在 CA 池中创建从属证书授权机构 (CA)。
从属 CA 负责直接向最终实体(例如用户、计算机和设备)颁发证书。从属 CA 由父级 CA(通常是根 CA)进行加密签名。因此,信任根 CA 的系统会自动信任从属 CA 以及从属 CA 颁发的最终实体证书。
准备工作
- 确保您拥有 CA Service Operation Manager (
roles/privateca.caManager) 或 CA Service Admin (roles/privateca.admin) IAM 角色。如需了解相关信息,请参阅配置 IAM 政策。 - 创建 CA 池。
- 选择您的根 CA。
- 如果包含颁发根 CA 的 CA 池配置了证书颁发政策,请验证其
baselineValues是否允许颁发 CA 证书caOptions.isCa: true、keyUsage.baseKeyUsage.certSign: true和keyUsage.baseKeyUsage.crlSign: true。否则,激活从属 CA 会失败,并显示Fields in the CSR were modified or removed in the signed CA certificate出错提示。
创建从属 CA
从属 CA 比根 CA 更容易撤消和轮替。如果您有多个证书颁发场景,可以为每种场景创建一个从属 CA。在 CA 池中添加多个从属 CA 有助于您更好地对证书请求进行负载均衡,并提高总有效 QPS。
如需创建从属 CA,请执行以下操作:
控制台
前往Google Cloud 控制台中的 Certificate Authority Service 页面。
点击 CA 管理器标签页。
点击创建 CA。
选择 CA 类型
- 点击从属 CA。
- 点击根 CA 位于 Google Cloud 中。
- 在有效期字段中,输入您希望 CA 证书有效的时长。
- 可选:选择 CA 的层级。默认层级为企业版。如需了解详情,请参阅选择操作层级。
- 点击区域,为 CA 选择一个位置。如需了解详情,请参阅位置。
- 可选:在初始化状态下,选择要在其中创建 CA 的操作状态。
- 可选:在设置颁发场景下,点击证书配置文件,然后从列表中选择最符合您要求的证书配置文件。如需了解详情,请参阅证书配置文件。
- 点击下一步。
- 可选:在组织 (O) 字段中,输入贵公司的名称。
- 可选:在组织部门 (OU) 字段中,输入公司下属机构或业务单位。
- 可选:在国家/地区名称 (C) 字段中,输入由两个字母组成的国家/地区代码。
- 可选:在州或省/自治区/直辖市名称字段中,输入您所在州的名称。
- 可选:在地区名称字段中,输入您所在城市的名称。
- 在 CA 通用名称 (CN) 字段中,输入 CA 名称。
- 点击继续。
- 选择最符合您需求的密钥算法。如需详细了解签名密钥选项,请参阅配置 CA 签名密钥。
- 如需使用客户管理的签名密钥,请选择客户管理的密钥,并提供 Cloud Key Management Service 加密密钥版本。
- 点击继续。
- 选择是要使用 Google 管理的 Cloud Storage 存储桶,还是使用客户管理的 Cloud Storage 存储桶。
- 对于 Google 管理的 Cloud Storage 存储桶,CA Service 会在 CA 所在的位置创建 Google 管理的存储桶。
- 对于客户管理的 Cloud Storage 存储桶,请点击“浏览”,然后选择一个现有的 Cloud Storage 存储桶。
- 点击继续。
以下步骤是可选的。
如果您想向 CA 添加标签,请执行以下操作:
- 点击 添加一项。
- 在键 1 字段中,输入标签键。
- 在值 1 字段中,输入标签值。
- 如果您想添加其他标签,请点击 添加项。然后,按照第 2 步和第 3 步中的说明添加标签键和值。
- 点击继续。
仔细检查所有设置,然后点击完成以创建 CA。
gcloud
为从属 CA 创建 CA 池:
gcloud privateca pools create SUBORDINATE_POOL_ID --location=LOCATION替换以下内容:
- SUBORDINATE_POOL_ID:CA 池的名称
- LOCATION:您要在其中创建 CA 池的位置。如需查看完整的位置列表,请参阅位置。
如需详细了解如何创建 CA 池,请参阅创建 CA 池。
如需详细了解
gcloud privateca pools create命令,请参阅 gcloud privateca pools create。在创建的 CA 池中创建从属 CA。
确保
--issuer-pool指定的是颁发 CA 池的 ID(而非根 CA 的资源 ID)。此外,如果颁发 CA 池配置了颁发政策,则其baselineValues必须允许 CA 证书:baselineValues: caOptions: isCa: true keyUsage: baseKeyUsage: certSign: true crlSign: true如果签发 CA 池限制仅向最终实体证书签发,则激活从属 CA 会失败,并显示
Fields in the CSR were modified or removed in the signed CA certificate出错提示。gcloud privateca subordinates create SUBORDINATE_CA_ID \ --pool=SUBORDINATE_POOL_ID \ --location=LOCATION \ --issuer-pool=ISSUER_POOL_ID \ --issuer-location=ISSUER_LOCATION \ --key-algorithm="ec-p256-sha256" \ --subject="CN=Example Server TLS CA, O=Example LLC"替换以下内容:
- SUBORDINATE_CA_ID:从属 CA 的唯一标识符
- SUBORDINATE_POOL_ID:CA 池的名称
- LOCATION:CA 池的位置
- ISSUER_POOL_ID:包含颁发 CA 的 CA 池的名称
ISSUER_LOCATION:包含颁发 CA 的 CA 池的位置
--key-algorithm标志指定您要用于为 CA 创建代管式 Cloud HSM 密钥的加密算法。--subject标志指定证书主体的 X.501 名称。
如需使用客户管理的签名密钥创建从属 CA,请运行以下命令:
gcloud privateca subordinates create SUBORDINATE_CA_ID \ --pool=SUBORDINATE_POOL_ID \ --location=LOCATION \ --issuer-pool=ISSUER_POOL_ID \ --issuer-location=ISSUER_LOCATION \ --kms-key-version=KMS_KEY_VERSION \ --subject="CN=Example Server TLS CA, O=Example LLC"替换以下内容:
- SUBORDINATE_POOL_ID:CA 池的名称
- LOCATION:CA 池的位置
- ISSUER_POOL_ID:包含颁发 CA 的 CA 池的名称
- ISSUER_LOCATION:包含颁发 CA 的 CA 池的位置
- KMS_KEY_VERSION:要用作签名密钥的客户管理的 Cloud KMS 加密密钥版本的完整资源 ID
如需详细了解签名密钥选项和准备客户管理的签名密钥,请参阅配置 CA 签名密钥。
创建从属 CA 时,系统会返回以下语句。
Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID].
如需指定自定义授权信息访问 (AIA) 和 CRL 分发点 (CDP) 访问网址,请使用
--custom-aia-urls和--custom-cdp-urls标志。如果指定,这些网址将包含在 CA 颁发的所有证书中,并取代默认的 Cloud Storage 存储桶访问网址。如需查看设置的详尽列表,请运行以下
gcloud命令:gcloud privateca subordinates create --help该命令会返回创建颁发者位于 CA Service 或其他位置的从属 CA 的示例。
Terraform
Java
如需向 CA Service 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 CA Service 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
启用从属 CA
如需启用从属 CA,请执行以下操作:
控制台
前往Google Cloud 控制台中的 Certificate Authority Service 页面。
点击 CA 管理器标签页。
在证书授权机构下,选择要启用的 CA。
点击 play_circle启用。
gcloud
如需启用新创建的从属 CA,请运行以下命令:
gcloud privateca subordinates enable SUBORDINATE_CA_ID \
--pool=SUBORDINATE_POOL_ID \
--location=LOCATION
替换以下内容:
- SUBORDINATE_CA_ID:从属 CA 的唯一标识符
- SUBORDINATE_POOL_ID:包含从属 CA 的 CA 池的名称
- LOCATION:CA 池的位置。如需查看完整的位置列表,请参阅位置。
如需详细了解 gcloud privateca subordinates enable 命令,请参阅 gcloud privateca subordinates enable。
Terraform
在从属 CA 上将 desired_state 字段设置为 ENABLED,然后运行 terraform apply。
Java
如需使用签名证书激活从属 CA,请调用 ActivateCertificateAuthority RPC:
如需启用从属 CA 以便其可以颁发证书,请调用 EnableCertificateAuthority RPC:
Python
如需使用签名证书激活从属 CA,请调用 ActivateCertificateAuthority RPC:
如需启用从属 CA 以便其可以颁发证书,请调用 EnableCertificateAuthority RPC:
后续步骤
- 了解如何申请证书。
- 了解如何使用 CSR 提交证书请求。
- 了解模板和颁发政策。