请求证书
本页面介绍了如何在 Certificate Authority Service 中创建证书请求。
您可以使用以下方法申请证书:
- 生成您自己的私钥或公钥,并提交证书签名请求 (CSR)。
- 使用由 CA 服务自动生成的私钥或公钥。
- 使用现有的 Cloud Key Management Service (Cloud KMS) 密钥。
准备工作
如需获得颁发证书所需的权限,请让管理员为您授予 CA Service Certificate Requester (
roles/privateca.certificateRequester
) 或 CA Service Certificate Manager (roles/privateca.certificateManager
) IAM 角色。如需详细了解 CA 服务的预定义 IAM 角色,请参阅使用 IAM 进行访问权限控制。
如需了解如何向主账号授予 IAM 角色,请参阅授予单个角色。
使用 CSR 请求证书
如需获取证书,您需要生成 CSR,然后使用该 CSR 来请求证书。
生成 CSR
如需详细了解如何使用 OpenSSL 生成 CSR,请参阅如何使用 OpenSSL 生成 CSR。 您还可以在生成 CSR 时参考以下示例配置文件。
如需使用示例配置文件,请按以下步骤操作:
使用以下配置创建名为
csr.cnf
的配置文件。cat << EOF > csr.cnf [req] distinguished_name = req_distinguished_name req_extensions = v3_req prompt = no [req_distinguished_name] CN = example.com [v3_req] keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = example.com DNS.2 = www.example.com EOF
此示例会生成一个 2048 位 RSA 密钥(口令加密)和一个包含以下内容的相应 CSR:
- 主题 DN 中的
commonName
属性 subjectAlternativeName
扩展程序keyUsage
扩展程序(标记为关键)extendedKeyUsage
扩展程序
根据需要修改参数。如需使用
x509v3_config
配置文件格式为 X.509 证书和 CSR 定义扩展,请参阅 OpenSSL 文档。- 主题 DN 中的
运行以下
openssl
命令,以生成 CSR 和相应的私钥:openssl req -newkey rsa:2048 -out csr.pem -keyout key.pem -config csr.cnf
此命令会生成以下文件:
csr.pem
:您的 CSR,可随时提交给 CAkey.pem
:您的私钥,您应妥善保管
在证书请求中使用
csr.pem
文件。
使用 CSR 提交证书请求
如需使用 CSR 请求证书,请按以下步骤操作:
控制台
前往Google Cloud 控制台中的 Certificate Authority Service 页面。
点击申请证书。
选择区域。该区域必须与您打算使用的 CA 池的区域相同。
选择 CA 池。
可选:从 CA 池中选择特定 CA。请注意,如果您选择特定 CA 来颁发证书,则会创建对该 CA 的依赖关系,从而更难轮换 CA。
可选:选择证书模板。如果您使用证书模板,请确保证书模板的政策与所选 CA 池的政策不冲突。
点击提供证书签名请求 (CSR),然后点击下一步。系统会显示证书详细信息。
可选:如需覆盖自动生成的证书名称,请在证书名称字段中输入自定义名称。证书创建后,您无法删除或重复使用证书名称。
可选:如需为证书选择自定义有效期,请在有效期字段中输入相应值。
将您的 CSR 复制并粘贴到证书 CSR 框中。如果您想上传包含 CSR 的文件,请点击浏览,然后选择相应的文件。
点击生成证书。
下载已签名的证书
- 如需查看生成的证书,请点击查看证书,然后点击查看。
- 如需复制证书,请点击
.crt
文件形式的证书,请点击 下载证书。
。如需下载 - 可选:如需下载证书链,请点击 下载证书链。
gcloud
gcloud privateca certificates create CERT_ID \
--issuer-pool POOL_ID \
--issuer-location ISSUER_LOCATION \
--csr CSR_FILENAME \
--cert-output-file CERT_OUTPUT_FILE \
--validity "P30D"
替换以下内容:
- CERT_ID:证书的唯一标识符。
- POOL_ID:CA 池的名称。
- ISSUER_LOCATION:证书的位置。
- CSR_FILENAME:存储 PEM 编码 CSR 的文件。
- CERT_OUTPUT_FILE:必须写入 PEM 编码的证书链文件的路径。证书链的顺序是从最终实体到根。
--validity
标志用于定义证书的有效期。这是一个可选标志,默认值为 30 天。
如需详细了解 gcloud privateca certificates create
命令,请参阅 gcloud privateca certificates 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 Cryptographic Authority (PyCA) 库。如需了解有关安装 Pyca 加密库的说明,请参阅包括 Pyca 加密库。
如需创建证书,请使用以下 gcloud
命令:
gcloud privateca certificates create \
--issuer-pool POOL_ID \
--issuer-location ISSUER_LOCATION \
--generate-key \
--key-output-file KEY_FILENAME \
--cert-output-file CERT_OUTPUT_FILE \
--dns-san "DNS_NAME" \
--use-preset-profile "CERTIFICATE_PROFILE"
替换以下内容:
- POOL_ID:CA 池的名称。
- ISSUER_LOCATION:证书的位置。
- KEY_FILENAME:必须写入生成的私钥文件的路径。
- CERT_OUTPUT_FILE:必须写入 PEM 编码的证书链文件的路径。证书链的顺序是从最终实体到根。
- DNS_NAME:一个或多个以英文逗号分隔的 DNS 主题备用名称 (SAN)。
- CERTIFICATE_PROFILE:证书配置文件的唯一标识符。例如,使用
leaf_server_tls
表示最终实体服务器 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 certificates create。
Go
如需向 CA Service 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 CA Service 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 CA Service 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
使用现有 Cloud KMS 密钥申请证书
您只能使用 Google Cloud CLI 通过 Cloud KMS 密钥请求证书。
gcloud
如需使用 Cloud KMS 密钥创建最终实体服务器 TLS 证书,请运行以下命令:
gcloud privateca certificates create \
--issuer-pool POOL_ID \
--issuer-location ISSUER_LOCATION \
--kms-key-version projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING/cryptoKeys/KEY/cryptoKeyVersions/KEY_VERSION \
--cert-output-file CERT_OUTPUT_FILE \
--dns-san "DNS_NAME" \
--use-preset-profile "leaf_server_tls"
替换以下内容:
- POOL_ID:CA 池的名称。
- ISSUER_LOCATION:证书的位置。
- PROJECT_ID:项目 ID。
- LOCATION_ID:密钥环的位置。
- KEY_RING:密钥所在的密钥环的名称。
- KEY:密钥的名称。
- KEY_VERSION:密钥的版本。
- CERT_OUTPUT_FILE:PEM 编码的证书链文件的路径。证书链文件按从最终实体到根的顺序排列。
- DNS_NAME:以英文逗号分隔的 DNS SAN。
从 CA 池中的特定 CA 颁发证书
本部分介绍如何从 CA 池中的特定 CA 颁发证书。
控制台
前往Google Cloud 控制台中的 Certificate Authority Service 页面。
点击申请证书。
选择区域。该区域必须与您打算使用的 CA 池的区域相同。
选择 CA 池。
如需选择 CA,请点击使用此 CA 池中的特定 CA,然后从列表中选择一个 CA。
选择其他参数,就像您在使用自动生成的密钥请求证书部分或使用 CSR 请求证书部分中所做的那样。
gcloud
如需指定 CA 池中的特定 CA 来颁发证书,请添加 --ca
标志,并指定必须颁发证书的 CA 的 CA_ID。
gcloud privateca certificates create \
--issuer-pool POOL_ID \
--issuer-location ISSUER_LOCATION \
--ca CA_ID \
--generate-key \
--key-output-file KEY_FILENAME \
--cert-output-file CERT_OUTPUT_FILE \
--dns-san "DNS_NAME" \
--use-preset-profile "leaf_server_tls"
Terraform
在验证模式下请求证书
在验证模式下请求证书会创建未签名的测试证书。此测试证书未采用 PEM 编码,不会产生任何费用。 虽然您无法下载证书,但假设证书说明可让您确认自己能够使用所选参数成功签发已签名的证书。
如需在验证模式下申请证书,请按以下步骤操作:
控制台
前往Google Cloud 控制台中的 Certificate Authority Service 页面。
点击申请证书。
选择使用验证模式来查看假设的证书说明,而不是使用签名证书。
按照与申请签名证书相同的步骤操作。
后续步骤
- 了解证书配置文件。
- 了解如何撤消证书。
- 了解如何对证书进行排序和过滤。 - 了解如何使用 Google Cloud CLI 管理证书。