使用 Google Cloud CLI 颁发证书
本页介绍了如何使用 Google Cloud CLI 通过证书授权机构服务生成或签发证书。
借助 CA Service,您可以部署和管理私有 CA,而无需管理基础架构。
准备工作
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Enable the Certificate Authority Service API:
gcloud services enable privateca.googleapis.com
Make sure that billing is enabled for your Google Cloud project.
配置一个默认位置,以便在本快速入门中的
gcloud
命令中使用。gcloud config set privateca/location LOCATION
CA 服务资源(例如 CA 池和 CA)位于单个 Google Cloud location 中,您在创建这些资源后便无法更改该 location。
创建 CA 池
证书授权机构 (CA) 池是包含多个 CA 的集合。CA 池能够轮替信任链,而不中断或停止工作负载。
如需在企业版层级创建 CA 池,请运行以下命令:
gcloud privateca pools create POOL_ID --location LOCATION --tier "enterprise"
替换以下内容:
- POOL_ID:CA 池的名称。
- LOCATION:CA 池的位置。如需查看位置的完整列表,请参阅位置。
所有 CA 服务资源的名称只能包含允许的字符,即所有字母、数字、连字符和下划线。允许的名称长度上限为 63 个字符。
创建根 CA
CA 池在创建时为空。如需从 CA 池请求证书,您必须在其中添加 CA。
如需创建根 CA 并将其添加到您创建的 CA 池中,请运行以下命令:
gcloud privateca roots create CA_ID --pool POOL_ID --location LOCATION --subject "CN=Example Prod Root CA, O=Google"
替换以下内容:
- CA_ID:根 CA 的名称。
- POOL_ID:CA 池的名称。
- LOCATION:CA 池的位置。如需查看位置的完整列表,请参阅位置。
CA Service 在创建根 CA 时会返回以下命令:
Created Certificate Authority [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificateAuthorities/CA_ID]
在 gcloud CLI 提示时输入 y
,以启用根 CA。
可选:创建从属 CA 池
如需创建从属 CA 池,请运行以下命令:
gcloud privateca pools create SUBORDINATE_POOL_ID
--location LOCATION
--tier TIER
替换以下内容:
- SUBORDINATE_POOL_ID:从属 CA 池的 ID。
- LOCATION:从属 CA 池的位置。如需查看位置的完整列表,请参阅位置。
- TIER:从属 CA 层级,即 DevOps 或企业。
可选:创建由存储在 Google Cloud中的根 CA 签名的从属 CA
如需在您在上一步中创建的从属 CA 池中创建从属 CA,请运行以下命令:
gcloud privateca subordinates create SUBORDINATE_CA_ID \
--location=LOCATION \
--pool=SUBORDINATE_POOL_ID \
--issuer-pool=POOL_ID \
--issuer-location=ISSUER_LOCATION \
--from-ca=EXISTING_CA_ID \
--kms-key-version projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/KEY_VERSION \"
替换以下内容:
- SUBORDINATE_CA_ID:从属 CA 的 ID。
- LOCATION:从属 CA 的位置。如需查看位置的完整列表,请参阅位置。
- SUBORDINATE_POOL_ID:您在上一部分中创建的从属 CA 池的 ID。
- POOL_ID:父 CA 池的 ID。
- ISSUER_LOCATION:证书的位置。
- EXISTING_CA_ID:来源 CA 的 ID。
- PROJECT_ID:项目的 ID。
- LOCATION_ID:密钥环的位置。
- KEY_RING:密钥所在的密钥环的名称。
- KEY:密钥的名称。
- KEY_VERSION:密钥的版本。
创建从属 CA 时,系统会返回以下语句。
Created Certificate Authority [projects/my-project-pki/locations/us-west1/caPools/SUBORDINATE_POOL_ID/certificateAuthorities/SUBORDINATE_CA_ID].
在 gcloud CLI 提示时输入 y
,以启用从属 CA。
创建证书
如需使用新创建的 CA 创建证书,请执行以下操作:
使用
pip
命令安装 Pyca 加密库。pip install --user "cryptography>=2.2.0"
CA 服务使用 Pyca 加密库在您的本地计算机上生成并存储新的非对称密钥对。此密钥绝不会发送到 CA Service。
如需允许 Google Cloud SDK 使用 Pyca 加密库,您必须启用网站软件包。
macOS 或 Linux
export CLOUDSDK_PYTHON_SITEPACKAGES=1
Windows
set CLOUDSDK_PYTHON_SITEPACKAGES=1
创建证书。
gcloud privateca certificates create \ --issuer-pool POOL_ID \ --issuer-location ISSUER_LOCATION \ --subject "CN=Example Prod,O=Google" \ --generate-key \ --key-output-file=./key \ --cert-output-file=./cert.pem
替换以下内容:
- POOL_ID:您创建的 CA 池的资源 ID。
- ISSUER_LOCATION:签发数字证书的认证机构的位置。
CA Service 会返回以下响应:
Created Certificate [projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificates/CERTIFICATE_ID]
清理
删除您为本快速入门创建的 CA 池、CA 和项目,以进行清理。
撤消证书。
- CERT_NAME:要撤消的证书的名称。
- POOL_ID:颁发证书的 CA 池的名称。
- LOCATION:CA 池的位置。
如需撤消证书,请运行以下命令:
gcloud privateca certificates revoke --certificate CERT_NAME --issuer-pool POOL_ID --location LOCATION
请替换以下内容:
删除 CA。
只有在撤消该 CA 颁发的所有证书后,您才能删除该 CA。
停用 CA。
gcloud privateca roots disable CA_ID --pool=POOL_ID --location=LOCATION
替换以下内容:
- CA_ID:CA 的资源 ID。
- POOL_ID:CA 池的资源 ID。
- LOCATION:CA 池的位置。如需查看位置的完整列表,请参阅位置。
删除 CA。
gcloud privateca roots delete CA_ID --pool=POOL_ID --location=LOCATION
CA 状态会更改为
Deleted
。CA 服务会在您发起删除操作 30 天后永久删除 CA。删除 CA 池。
只有在 CA 池中的 CA 被永久删除后,您才能删除该 CA 池。
gcloud privateca pools delete POOL_ID --location=LOCATION
删除项目。
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
后续步骤
- 详细了解 CA 池。
- 详细了解如何创建 CA 池。
- 详细了解如何创建 CA。
- 详细了解如何申请证书。
- 了解如何控制 CA 池可以颁发的证书类型。