IBM Cloud Docs
创建根认证中心

创建根认证中心

使用 IBM Cloud® Secrets Manager,您可以通过创建根和中间认证中心 (CA) 来构建和管理自己的公用密钥基础结构 (PKI) 系统。

认证中心 (CA) 是用于签署和发放 SSL/TLS 证书的实体。 如果您希望能够快速生成自签名证书,那么可以使用 Secrets Manager 来创建内部签名的根 CA。 您可以使用此 CA 作为证书链的信任锚。 为实例创建根 CA 后,可以使用它来对较低级别或下级 CA (例如,在服务中创建的其他中间 CA) 进行签名。

每个实例最多可以创建 10 个根认证中心。 要查看可用于实例的配置的列表,请转至 Secrets Manager UI 中的“密钥引擎> 专用证书”页面。

准备工作

开始之前,请确保您具有所需的访问级别。 要管理实例的引擎配置,您需要 管理者 服务角色或更高版本

在 UI 中创建根认证中心

您可以使用 Secrets Manager UI 为服务实例创建内部签名的根认证中心。

  1. 在控制台中,单击 菜单 图标 "菜单" 图标 > 资源列表

  2. 从服务列表中,选择 Secrets Manager的实例。

  3. 在“密钥引擎”页面中,单击 专用证书 选项卡。

  4. 在“认证中心”表中,单击 创建认证中心 以启动创建向导。

  5. 指定认证中心类型和选项。

    1. 选择 根认证中心 作为权限类型。
    2. 输入名称以轻松识别认证中心。
    3. 选择要为此 CA 生成的证书的最长生存时间 (TTL)。 TTL 确定 CA 证书保持有效的时间长度。
    4. 选择链中可以存在的下级或下级中间证书的最大数量。
    5. 要将颁发 CA 证书的 URL 编码为中间 CA 证书,请设置编码 URL 选择已启用
  6. 输入根 CA 证书的主题名称字段。

  7. 选择密钥管理服务。 选择 Secrets Manager 服务,以便在服务内部创建根证书授权密钥,或选择 Hyper Protect Crypto Services (HPCS)。 如果选择 HPCS,则执行以下任务:

    1. 从实例下拉列表中选择您的 HPCS 实例,或手动输入您的 HPCS 实例 CRN

    2. 选择之前创建的 IAM 凭据密文,以便与 HPCS 进行身份验证。

      一旦在 CA 配置中设置了 IAM 凭据,以后就无法替换。

    3. 从密钥存储下拉列表中选择 HPCS 私有密钥存储,或手动输入密钥存储 ID。

    4. 选择使用现有密钥或生成新密钥。 如果选择现有的 HPCS 私钥或手动输入私钥 ID,请确保存在公钥,且其 ID 与私钥库中的私钥相同。

      如果您选择生成新密钥,在删除配置时,这些密钥将不会被 Secrets Manager 删除。

  8. 选择要用于为 CA 证书生成公用密钥和专用密钥的密钥算法

  9. 确定是否为 CA 证书启用证书撤销列表 (CRL) 构建和分发点。

    CRL 是由签发认证中心在其预定到期日期之前撤销的证书的列表。 应用程序无法再信任作为 CRL 一部分列出的证书。

    1. 要使用每个证书请求为根 CA 构建 CRL,请将 CRL 构建 选项设置为 已启用
    2. 要对根 CA 证书中的吊销列表的 URL 进行编码,请设置 CRL 分发点选择已启用
    3. 选择生成的 CRL 的生存时间 (TTL)。 TTL 确定 CRL 保持有效的时间长度。
  10. 复查您的选择。 要创建根 CA,请单击 创建

现在,您可以在 创建具有内部签名的中间 CA 时选择此根 CA。 要修改或删除现有配置,请单击要更新的证书颁发机构行中的 Actions 菜单 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 来检索根认证中心值。

  1. 公用证书 私钥引擎中,单击 操作 菜单 "操作" 图标 以打开引擎配置的选项列表。
  2. 要查看配置值,请单击 查看配置
  3. 确保您处于安全环境中后,单击 确认

将显示密钥值 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

成功响应将返回引擎配置的值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 获取私钥

后续步骤