创建根认证中心
使用 IBM Cloud® Secrets Manager,您可以通过创建根和中间认证中心 (CA) 来构建和管理自己的公用密钥基础结构 (PKI) 系统。
认证中心 (CA) 是用于签署和发放 SSL/TLS 证书的实体。 如果您希望能够快速生成自签名证书,那么可以使用 Secrets Manager 来创建内部签名的根 CA。 您可以使用此 CA 作为证书链的信任锚。 为实例创建根 CA 后,可以使用它来对较低级别或下级 CA (例如,在服务中创建的其他中间 CA) 进行签名。
每个实例最多可以创建 10 个根认证中心。 要查看可用于实例的配置的列表,请转至 Secrets Manager UI 中的“密钥引擎> 专用证书”页面。
准备工作
开始之前,请确保您具有所需的访问级别。 要管理实例的引擎配置,您需要 管理者 服务角色或更高版本。
在 UI 中创建根认证中心
您可以使用 Secrets Manager UI 为服务实例创建内部签名的根认证中心。
-
在控制台中,单击 菜单 图标
> 资源列表。
-
从服务列表中,选择 Secrets Manager的实例。
-
在“密钥引擎”页面中,单击 专用证书 选项卡。
-
在“认证中心”表中,单击 创建认证中心 以启动创建向导。
-
指定认证中心类型和选项。
- 选择 根认证中心 作为权限类型。
- 输入名称以轻松识别认证中心。
- 选择要为此 CA 生成的证书的最长生存时间 (TTL)。 TTL 确定 CA 证书保持有效的时间长度。
- 选择链中可以存在的下级或下级中间证书的最大数量。
- 要将颁发 CA 证书的 URL 编码为中间 CA 证书,请设置编码 URL 选择已启用。
-
输入根 CA 证书的主题名称字段。
-
选择密钥管理服务。 选择 Secrets Manager 服务,以便在服务内部创建根证书授权密钥,或选择 Hyper Protect Crypto Services (HPCS)。 如果选择 HPCS,则执行以下任务:
-
从实例下拉列表中选择您的 HPCS 实例,或手动输入您的 HPCS 实例 CRN
-
选择之前创建的 IAM 凭据密文,以便与 HPCS 进行身份验证。
一旦在 CA 配置中设置了 IAM 凭据,以后就无法替换。
-
从密钥存储下拉列表中选择 HPCS 私有密钥存储,或手动输入密钥存储 ID。
-
选择使用现有密钥或生成新密钥。 如果选择现有的 HPCS 私钥或手动输入私钥 ID,请确保存在公钥,且其 ID 与私钥库中的私钥相同。
如果您选择生成新密钥,在删除配置时,这些密钥将不会被 Secrets Manager 删除。
-
-
确定是否为 CA 证书启用证书撤销列表 (CRL) 构建和分发点。
CRL 是由签发认证中心在其预定到期日期之前撤销的证书的列表。 应用程序无法再信任作为 CRL 一部分列出的证书。
- 要使用每个证书请求为根 CA 构建 CRL,请将 CRL 构建 选项设置为 已启用。
- 要对根 CA 证书中的吊销列表的 URL 进行编码,请设置 CRL 分发点选择已启用。
- 选择生成的 CRL 的生存时间 (TTL)。 TTL 确定 CRL 保持有效的时间长度。
-
复查您的选择。 要创建根 CA,请单击 创建。
现在,您可以在 创建具有内部签名的中间 CA 时选择此根 CA。 要修改或删除现有配置,请单击要更新的证书颁发机构行中的 Actions 菜单 。
使用 API 创建根认证中心
您可以通过调用 Secrets Manager API 为服务实例创建内部签名的根认证中心。
以下示例显示可用于创建根认证中心的查询。
curl -X POST
--H "Authorization: Bearer {iam_token}" \
--H "Accept: application/json" \
--H "Content-Type: application/json" \
--d '{
"config_type": "private_cert_configuration_root_ca",
"name": "test-root-CA",
"common_name": "example.com",
"crl_disable": false,
"crl_distribution_points_encoded": true,
"issuing_certificates_urls_encoded": true,
"max_ttl": "43830h"
}' \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations"
如果自带 HSM,请在申请中注明以下内容:
"crypto_key": {
"label": "my_key",
"allow_generate_key": true,
"provider": {
"type": "hyper_protect_crypto_services",
"instance_crn": "replace_with_hpcs_crn::",
"pin_iam_credentials_secret_id": "replace_with_iam_credentials_secret_guid",
"private_keystore_id": "replace_with_keystore_id"
}
}
成功响应会将配置添加到服务实例。
{
"common_name": "example.com",
"config_type": "private_cert_configuration_root_ca",
"created_at": "2022-06-27T11:58:15Z",
"created_by": "iam-ServiceId-e4a2f0a4-3c76-4bef-b1f2-fbeae11c0f21",
"crl_disable": false,
"crl_distribution_points_encoded": true,
"data": {
"certificate": "-----BEGIN CERTIFICATE-----\nMIIGRjCCBS6gAwIBAgIUSKW6zI+E9JU4bva\n-----END CERTIFICATE-----",
"expiration": 1825612535,
"issuing_ca": "-----BEGIN CERTIFICATE-----\nMIIGRjCCBS6gAwIBAgIUSKW6zI+E9JU4bvad\n-----END CERTIFICATE-----",
"serial_number": "48:a5:ba:cc:8f:84:f4:95:38:6e:f6:9d:9e:d7:8f:d8:43:d3:55:bd"
},
"exclude_cn_from_sans": false,
"format": "pem",
"issuing_certificates_urls_encoded": true,
"max_path_length": -1,
"max_ttl_seconds": 31536000,
"name": "test-root-CA",
"private_key_format": "der",
"secret_type": "private_cert",
"updated_at": "2022-10-05T21:33:11Z"
}
有关必需和可选请求参数的更多信息,请参阅 添加配置。
从 CLI 创建根认证中心
您可以使用 ibmcloud secrets-manager configuration-create
命令为服务实例创建内部签名的根认证中心。
以下示例显示可用于创建根认证中心的命令。
ibmcloud secrets-manager configuration-create
--configuration-prototype='{
"config_type": "private_cert_configuration_root_ca",
"name": "example-root-CA",
"max_ttl": "43830h",
"crl_expiry": "72h",
"crl_disable": false,
"crl_distribution_points_encoded": true,
"issuing_certificates_urls_encoded": true,
"common_name": "example.com",
"alt_names": [
"alt-name-1","alt-name-2"
],
"ip_sans": "127.0.0.1",
"uri_sans": "https://www.example.com/test",
"other_sans": ["1.2.3.5.4.3.201.10.4.3;utf8:test@example.com"],
"ttl": "2190h",
"format": "pem",
"private_key_format": "der",
"key_type": "rsa",
"key_bits": 4096,
"max_path_length": -1,
"exclude_cn_from_sans": false,
"permitted_dns_domains": ["exampleString"],
"ou": ["exampleString"],
"organization": ["exampleString"],
"country": ["exampleString"],
"locality": ["exampleString"],
"province": ["exampleString"],
"street_address": ["exampleString"],
"postal_code": ["exampleString"],
"serial_number": "d9:be:fe:35:ba:09:42:b5:35:ba:09:42:b5"
}'
如果自带 HSM,请在命令中包含以下内容:
"crypto_key": {
"label": "my_key",
"allow_generate_key": true,
"provider": {
"type": "hyper_protect_crypto_services",
"instance_crn": "replace_with_hpcs_crn::",
"pin_iam_credentials_secret_id": "replace_with_iam_credentials_secret_guid",
"private_keystore_id": "replace_with_keystore_id"
}
}
使用 Terraform 创建根认证中心
您可以使用 Terraform for Secrets Manager为服务实例创建内部签名的根认证中心。
以下示例显示可用于创建根认证中心的配置。
resource "ibm_sm_private_certificate_configuration_root_ca" "test_root_ca" {
instance_id = local.instance_id
region = local.region
name = "test-root-ca"
common_name = "root.example.com"
max_ttl = "3650d"
issuing_certificates_urls_encoded = true
}
如果自带 HSM,请在配置中包含以下内容:
crypto_key {
label = "my_key"
allow_generate_key = true
provider {
type = "hyper_protect_crypto_services"
instance_crn = "replace_with_hpcs_crn::"
pin_iam_credentials_secret_id = "replace_with_iam_credentials_secret_guid"
private_keystore_id = "replace_with_keystore_id"
}
}
在 UI 中检索根认证中心
您可以使用 Secrets Manager UI 来检索根认证中心值。
- 在 公用证书 私钥引擎中,单击 操作 菜单
以打开引擎配置的选项列表。
- 要查看配置值,请单击 查看配置。
- 确保您处于安全环境中后,单击 确认。
将显示密钥值 15 秒,然后关闭对话框。
使用 CLI 检索根认证中心
您可以使用 Secrets Manager CLI 来检索根认证中心值。 在以下示例命令中,将引擎配置名称替换为配置的名称。
ibmcloud secrets-manager configuration --name EXAMPLE_CONFIG --service-url https://{instance_ID}.{region}.secrets-manager.appdomain.cloud
将 {instance_ID}
和 {region}
替换为适用于 Secrets Manager 服务实例的值。 要查找特定于您的实例的端点 URL,您可以从端点页面中的Secrets Manager用户界面。 有关更多信息,请参阅 查看端点 URL
使用 API 检索根认证中心
您可以使用 Secrets Manager API 来检索根认证中心值。 在以下示例请求中,将引擎配置名称替换为配置的名称。
curl -X GET --location --header "Authorization: Bearer {iam_token}" \
--header "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations/{name}"
将 {instance_ID}
和 {region}
替换为适用于 Secrets Manager 服务实例的值。 要查找特定于您的实例的端点 URL,您可以从端点页面中的Secrets Manager用户界面。 有关更多信息,请参阅 查看端点 URL
成功响应将返回引擎配置的值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 获取私钥。