请求证书并查看已颁发的证书
本主题介绍了如何向 Certificate Authority Service 请求证书以及如何查看已颁发的证书。
准备工作
确保您拥有 CA Service Certificate Requester (roles/privateca.certificateRequester
) 或 CA Service Certificate Manager (roles/privateca.certificateManager
) IAM 角色。如需详细了解 CA Service 的预定义 IAM 角色,请参阅使用 IAM 进行访问权限控制。
如需了解如何向主账号授予 IAM 角色,请参阅授予单个角色。
概览
您可以使用以下方法请求证书:
- 生成您自己的私钥或公钥,然后提交证书签名请求 (CSR)。
- 让 CA Service 为您创建私钥或公钥。
- 使用现有的 Cloud Key Management Service (Cloud KMS) 密钥。
使用 CSR 请求证书
必须先生成 CSR,然后才能继续。生成 CSR 后,请执行以下操作:
控制台
前往 Google Cloud 控制台中的 Certificate Authority Service 页面。
点击 CA 管理器标签页。
点击要从中签发证书的 CA 的名称。
在“CA 详细信息”页面底部,点击请求证书。
可选:如果您要使用证书模板,请点击 ,从列表中选择一个模板,然后点击保存。
点击提供 CSR。
可选:如需覆盖自动生成的证书名称,请在证书名称字段中输入自定义名称。
可选:如需为证书选择自定义有效期,请在有效期字段中输入值。
将您的 CSR 复制并粘贴到 Certificate CSR 框中。如需上传 CSR,请点击浏览。
点击下一步。
下载已签署的证书
- 如需复制证书,请点击
.crt
文件的形式下载证书,请点击 下载证书。
。
如需以 - 可选:如需下载证书链,请点击 下载证书链。
- 点击完成。
gcloud
gcloud privateca certificates create CERT_ID \
--issuer-pool POOL_ID \
--csr CSR_FILENAME \
--cert-output-file CERT_FILENAME \
--validity "P30D"
替换以下内容:
- CERT_ID:证书的唯一标识符。
- POOL_ID:CA 池的名称。
- CSR_FILENAME:用于存储 PEM 编码的 CSR 的文件。
--validity
标志定义了证书的有效期。这是一个可选标志,默认值为 30 天。
如需详细了解 gcloud privateca certificates create
命令,请参阅 gcloud privateca Certificate create。
Terraform
REST API
使用您的首选方法(例如
openssl
)生成证书签名请求 (CSR)。以下是针对 JSON 编码的 CSR 示例。
-----BEGIN CERTIFICATE REQUEST-----\nMIIChTCCAW0CAQAwQDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMQ8wDQYDVQQK\nDAZKb29uaXgxEzARBgNVBAMMCmpvb25peC5uZXQwggEiMA0GCSqGSIb3DQEBAQUA\nA4IBDwAwggEKAoIBAQCnyy+5vcRQUBPqAse3ojmWjyUvhcJK6eLRXpp0teEUF5kg\nHb2ov8gYXb9sSim5fnvs09dGYDKibSrL4Siy7lA/NzMzWtKwyQQeLIQq/cLUJVcd\ndItJ0VRcqr+UPkTCii2vrdcocNDChHM1J8chDdl6DkpYieSTqZwlPcWlQBGAINmT\nT3Q0ZarIVM5l74j13WPuToGrhbVOIZXWxWqJjlHbBA8B/VKtSRCzM1qG60y8Pu2f\n6c78Dfg8+CGRzGwnz8aFS0Yf9czT9luNHSadS/RHjvE9FPZCsinz+6mJlXRcphi1\nKaHsDbstUAhse1h5E9Biyr9SFYRHxY7qRv9aSJ/dAgMBAAGgADANBgkqhkiG9w0B\nAQsFAAOCAQEAZz+I9ff1Rf3lTewXRUpA7nr5HVO1ojCR93Pf27tI/hvNH7z7GwnS\noScoJlClxeRqABOCnfmVoRChullb/KmER4BZ/lF0GQpEtbqbjgjkEDpVlBKCb0+L\nHE9psplIz6H9nfFS3Ouoiodk902vrMEh0LyDYNQuqFoyCZuuepUlK3NmtmkexlgT\n0pJg/5FV0iaQ+GiFXSZhTC3drfiM/wDnXGiqpbW9WmebSij5O+3BNYXKBUgqmT3r\nbryFydNq4qSOIbnN/MNb4UoKno3ve7mnGk9lIDf9UMPvhl+bT7C3OLQLGadJroME\npYnKLoZUvRwEdtZpbNL9QhCAm2QiJ6w+6g==\n-----END CERTIFICATE REQUEST-----
请求证书。
HTTP 方法和网址:
POST https://privateca.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/caPools/POOL_ID/certificates?certificate_id=CERTIFICATE_ID
请求 JSON 正文:
{ "lifetime": { "seconds": 3600, "nanos": 0 }, "pem_csr": "PEM_CSR" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/project-id/locations/location/certificateAuthorities/ca-id/certificates/certificate-id", "pemCertificate": "-----BEGIN CERTIFICATE-----...", "certificateDescription": {...} }
使用自动生成的密钥请求证书
控制台
您可以使用 Google Cloud 控制台生成客户端或服务器 TLS 证书。
在 Google Cloud 控制台中,前往 Certificate Authority Service 页面。
点击 CA 管理器标签页。
点击要从中签发证书的 CA 的名称。
在证书授权机构详细信息页面底部,点击请求证书。
可选:如果您要使用证书模板,请点击 ,从列表中选择一个模板,然后点击保存。
点击输入详细信息。
可选:将自动生成的证书名称替换为唯一的自定义名称。
可选:如需为证书选择自定义有效期,请在有效期字段中输入值。
添加域名
- 在添加域名下的域名 1 字段中输入域名。
- 可选:如果要添加多个域名,请点击添加项,然后在域名 2 字段中输入另一个域名。
扩展的密钥用途
可选:在扩展密钥用法下,根据您的用例从以下选项中进行选择:
- 服务器 TLS:这些证书可让您对服务器的身份进行身份验证。
- 客户端 TLS:这些证书可让您对请求者的身份进行身份验证。
点击下一步。
配置密钥大小和算法
- 可选:在配置密钥大小和算法下,从列表中选择签名密钥大小和算法。如果您跳过此步骤,则会使用具有 SHA 256 摘要的 RSASSA-PSS 2048 位密钥。如需了解如何选择签名密钥和算法,请参阅选择密钥算法。
- 点击继续。
下载已签署的证书
- 可选:如需下载 PEM 编码的证书链,请点击下载证书链。
可选:如需下载关联的 PEM 编码私钥,请点击下载私钥。
点击完成。
gcloud
如需使用自动生成的密钥功能,您需要安装 Python 加密密钥 (PyCA) 库。如需了解如何安装 Pyca 加密库,请参阅添加 Pyca 加密库。
如需创建证书,请使用以下 gcloud
命令:
gcloud privateca certificates create \
--issuer-pool POOL_ID \
--generate-key \
--key-output-file KEY_FILENAME \
--cert-output-file CERT_FILENAME \
--dns-san "DNS_NAME" \
--use-preset-profile "CERTIFICATE_PROFILE"
替换以下内容:
- POOL_ID:CA 池的名称。
- KEY_FILENAME:必须写入生成的私钥文件的路径。
- CERT_FILENAME:必须写入 PEM 编码的证书链文件的路径。证书链按从最终实体到根的顺序进行排序。
- DNS_NAME:一个或多个以英文逗号分隔的 DNS 主题备用名称 (SAN)。
- CERTIFICATE_PROFILE:证书配置文件的唯一标识符。例如,为终端实体服务器 TLS 使用
leaf_server_tls
。
gcloud
命令会提及以下标志:
--generate-key
:在您的计算机上生成新的 RSA-2048 私钥。
您也可以使用以下标志的任意组合:
--dns-san
:允许您传递一个或多个以英文逗号分隔的 DNS SAN。--ip-san
:允许您传递一个或多个以英文逗号分隔的 IP SAN。--uri-san
:允许您传递一个或多个以英文逗号分隔的 URI SAN。--subject
:允许您传递证书主题的 X.501 名称。
如需详细了解 gcloud privateca certificates create
命令,请参阅 gcloud privateca Certificate create。
Go
如需向 CA Service 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 CA Service 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 CA Service 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
使用现有 Cloud KMS 密钥请求证书
如需使用 Cloud KMS 密钥创建终端实体服务器 TLS 证书,请运行以下命令:
gcloud privateca certificates create \
--issuer-pool POOL_ID \
--kms-key-version projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/KEY_VERSION \
--cert-output-file CERT_FILENAME \
--dns-san "DNS_NAME" \
--use-preset-profile "leaf_server_tls"
替换以下内容:
- POOL_ID:CA 池的名称。
- PROJECT_ID:项目 ID。
- LOCATION_ID:密钥环的位置。
- KEY_RING:密钥所在密钥环的名称。
- KEY:键的名称。
- KEY_VERSION:密钥的版本。
- CERT_FILENAME:PEM 编码的证书链文件的路径。证书链文件按从最终实体到根的顺序进行排序。
- DNS_NAME:以英文逗号分隔的 DNS SAN。
使用证书执行常见操作
本部分介绍如何使用证书执行某些常见操作。
从 CA 池中的特定 CA 颁发证书
gcloud
如需以 CA 池中的特定 CA 颁发证书,请添加 --ca
标志和必须颁发证书的 CA 的 CA_ID。
gcloud privateca certificates create \
--issuer-pool POOL_ID \
--ca CA_ID \
--generate-key \
--key-output-file KEY_FILENAME \
--cert-output-file CERT_FILENAME \
--dns-san "DNS_NAME" \
--use-preset-profile "leaf_server_tls"
控制台
Google Cloud 控制台仅支持从特定 CA 颁发证书。按照使用自动生成的密钥请求证书部分或使用 CSR 请求证书部分中的说明,选择必须颁发证书的 CA。
Terraform
查看已颁发的证书
控制台
在 Google Cloud 控制台中,前往 Certificate Authority Service 页面。
点击 CA 管理员标签页。
在证书授权机构页面上,点击 CA 的名称。
在证书授权机构详细信息页面底部,点击查看已颁发的证书以查看 CA 颁发的证书列表。
您可以在所有证书页面上查看这些证书。详细信息包括证书的状态、颁发证书的 CA、包含该 CA 的 CA 池、证书的失效日期等。
gcloud
如需列出 CA 池中由特定 CA 颁发的所有证书,请使用以下 gcloud
命令:
gcloud privateca certificates list --issuer-pool ISSUER_POOL --ca CA_NAME
如需详细了解 gcloud privateca certificates list
命令,请参阅 gcloud privateca Certificate list。
如需列出给定位置中所有 CA 的所有证书,请使用以下 gcloud
命令:
gcloud privateca certificates list --location LOCATION
Go
如需向 CA Service 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 CA Service 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 CA Service 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
查看单个证书的详细信息
控制台
在 Google Cloud 控制台中,前往 Certificate Authority Service 页面。
在 CA 管理器标签页下选择您的目标 CA。
点击 CA 名称。
在证书授权机构详细信息页面底部,点击查看已颁发的证书以查看已颁发证书的列表。
在要下载的证书的操作列中,点击
。在下载下,点击证书。您可以点击证书链下载证书链。
gcloud
如需查看证书的完整说明,请运行以下命令:
gcloud privateca certificates describe CERT_NAME \
--issuer-pool POOL_ID
如需详细了解 gcloud privateca certificates describe
命令,请参阅 gcloud privateca Certificate describe。
如需将 PEM 编码的 X.509 证书链导出到文件,请运行以下命令:
gcloud privateca certificates export CERT_NAME \
--issuer-pool POOL_ID \
--include-chain \
--output-file certificate-file
如需详细了解 gcloud privateca certificates export
命令,请参阅 gcloud privateca 证书导出。
证书的持有证明
私钥的持有证明可确保证书请求者持有该证书的私钥。仅当请求者根据 RFC 2986 提供 PKCS #10 CSR 时,CA Service 才会检查所有权证明。但系统不会强制执行其他形式的证书请求(例如 CertificateConfig 发出的请求)的持有证明。
接受证书的客户端应用会负责验证证书持有者是否拥有该证书的私钥。在证书颁发期间强制执行所有权证明检查,是一种深度防御机制,旨在防范行为不当的客户端。无论 CA 是否检查所有权证明,此类客户端的存在都可能构成安全漏洞。
后续步骤
- 了解证书配置文件。
- 了解如何撤消证书。
- 了解如何对证书进行排序和过滤。
- 了解如何使用 Google Cloud CLI 管理证书。