IBM Cloud Docs
创建 SSL/TLS 专用证书

创建 SSL/TLS 专用证书

您可以使用 IBM Cloud® Secrets Manager 来存储,请求和生成可用于应用程序或服务的专用 SSL/TLS 证书。

SSL/TLS 证书是一种数字证书类型,用于在服务器和客户机之间建立通信隐私。 证书由 认证中心(CA)发放数字证书的第三方可信组织或公司。 认证中心通常会对被授予唯一证书的个人进行身份验证。 发放,并包含用于在端点之间创建可信和安全连接的信息。 将证书添加到 Secrets Manager 实例后,可以使用该证书来保护云部署或本地部署的网络通信。 您的证书安全地存储在专用 Secrets Manager 服务实例中,您可以在其中集中管理其生命周期。

在 Secrets Manager中,使用专用认证中心创建的证书是专用证书 (private_cert)。导入到服务的证书是 已导入的证书 (imported_cert)。您通过第三方认证中心的 Secrets Manager 订购的证书是 公用证书 (public_cert)。

准备工作

开始之前,请确保您具有所需的访问级别。 要创建或添加私钥,您需要 写入者 服务角色或更高级别的

在创建专用证书之前,请确保:

  • 准备实例以创建证书
  • 查看可用的中间认证中心。 要查看为实例定义的配置,请转至 Secrets Manager UI 中的“密钥引擎> 专用证书”页面。
  • 查看可用于所选中间 CA 的 证书模板

创建专用证书时,需要选择模板。 根据您选择的模板,可能会应用专用证书的一些限制。 要查看为中间 CA 定义的模板,请转至 Secrets Manager UI 中的“密钥引擎> 专用证书”页面。 展开要用作专用证书发放机构的中间 CA 的行,然后单击 模板 以查看可用的模板。

创建专用证书

为实例 配置专用证书引擎 后,可以使用 Secrets Manager 通过使用先前为 Secrets Manager 服务实例配置的内部认证中心来生成专用证书。 在可以向您发放证书之前,Secrets Manager 会进行检查,以确保您的证书请求符合为您选择的 证书模板 定义的限制。 发放证书后,可以将其部署到集成应用程序,下载,撤销或手动对其进行轮换。

在 UI 中创建专用证书

您可以使用 Secrets Manager UI 来创建专用证书。

  1. 在控制台中,单击 菜单 图标 "菜单" 图标 > 资源列表
  2. 从服务列表中,选择 Secrets Manager的实例。
  3. 在“私钥”表中,单击 添加
  4. 单击 创建专用证书 磁贴。
  5. 单击下一步
  6. 添加名称和描述以轻松识别证书。
  7. 可选: 添加标签以帮助您在实例中搜索类似私钥。
  8. 可选: 将元数据添加到私钥或私钥的特定版本。
    1. 上载文件或输入 JSON 格式的元数据和版本元数据。
  9. 单击下一步
  10. 选择证书颁发机构配置。

您选择的配置将确定用于签署和发放证书的认证中心。 要查看为实例定义的配置,可以转至 密钥引擎> 专用证书

  1. 选择 证书模板

您选择的模板确定要应用于所生成证书的参数。 要查看为所选认证中心定义的证书模板的详细信息,可以转至 密钥引擎> 专用证书。 从认证中心列表中,展开要用作专用证书的颁发机构的 CA 行,然后单击 模板。 12. 可选: 对证书启用自动轮换。

要启用自动旋转,请将旋转开关切换为 开启。 选择用于指定调度轮换之间的天数的时间间隔和单位。

根据您在以下步骤中选择的证书模板,可能会应用对专用证书的轮换时间间隔的一些限制。 例如,旋转时间间隔不能超过模板中定义的生存时间 (TTL)。 有关更多信息,请参阅 证书模板

  1. 必需: 指定证书的公共名称。

根据您选择的证书模板,可能会对通用名称有一些限制。 要查看所选证书模板的详细信息,可以转至 密钥引擎> 专用证书。 从认证中心列表中,展开要用作专用证书的颁发机构的 CA 行,然后单击 模板。 14. 选择要分配给证书的 密钥组包含实例中的私钥的环境和约束必须遵守。 用户可以与一个秘密群组关联,以实现访问和协作。

如果所选证书模板允许将证书添加到特定密钥组,那么将仅列出允许的那些组。 如果模板没有限制,那么您可以创建一个私钥组 (如果您还没有私钥组)。 您的证书将自动添加到新组。 有关私钥组的更多信息,请查看 组织私钥。 15. 可选: 指定证书的备用名称。

替代名称可以是主机名或电子邮件地址。 16. 单击下一步。 17. 查看证书的详细信息。 18. 单击添加

从 CLI 创建专用证书

开始之前,请 按照 CLI 文档 设置 API 端点。

要使用 Secrets Manager CLI 插件创建专用证书,请运行 ibmcloud secrets-manager secret-create 命令。 例如,以下命令根据您指定的证书模板创建专用证书私钥。

订购证书时,将进行域验证以验证所选域的所有权。 此过程可能需要几分种才能完成。

ibmcloud secrets-manager secret-create --secret-prototype=
    '[{
        "name": "example-private-certificate",
        "description": "Extended description for this secret.",
        "secret_group_id": "bc656587-8fda-4d05-9ad8-b1de1ec7e712",
        "labels": [
            "dev","us-south"
        ],
        "certificate_template": "example-certificate-template"
        "common_name": "cert_common_name",
        "rotation": {
            "enabled": false,
            "rotate_keys":false
            },
        "custom_metadata" : {
        "anyKey" : "anyValue"
    },
        "version_custom_metadata" : {
            "anyKey" : "anyValue"
        },
        "expiration_date" : "2030-01-01T00:00:00Z",
        }
    ]

此命令将输出私钥的标识值以及其他元数据。 有关命令选项的更多信息,请参阅 ibmcloud secrets-manager secret-create

使用 API 创建专用证书

您可以通过调用 Secrets Manager API 以编程方式生成专用证书。

以下示例显示可用于创建专用证书的查询。 调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。

您可以使用 custom_metadataversion_custom_metadata 请求参数来存储与组织需求相关的元数据。 仅针对私钥版本返回 version_custom_metadata 的值。 私钥的定制元数据存储为最多 50 个版本的所有其他元数据,并且不得包含机密数据。

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
        "name": "example-private-certificate",
        "description": "Description of my private certificate",
        "secret_type": "private_cert",
        "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
        "labels": [
            "dev",
            "us-south"
        ],
        "certificate_template": "test-certificate-template",
        "common_name": "localhost",
        "alt_names": [
            "alt-name-1",
            "alt-name-2"
        ],
        "ip_sans": "127.0.0.1",
        "uri_sans": "https://www.example.com/test",
        "ttl": "2190h",
        "rotation": {
            "auto_rotate": true,
            "interval": 1,
            "unit": "month"
        },
        "custom_metadata": {
            "metadata_custom_key": "metadata_custom_value"
        },
        "version_custom_metadata": {
            "custom_version_key": "custom_version_value"
        }
        }' \ "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

需要使用高级选项创建专用证书吗? 您可以使用可选请求参数来指定专用证书的高级属性,例如主题备用名称或生存时间 (TTL)。 如果省略这些可选参数,那么将应用为所选证书模板定义的属性。 有关更多信息,请参阅 API 参考

成功的请求将返回专用证书的内容,以及由证书模板和颁发认证中心确定的其他元数据。

{
  "alt_names": [
    "s1.example.com",
    "*.s2.example.com"
  ],
  "certificate_authority": "test-intermediate-CA",
  "certificate_template": "test-certificate-template",
  "common_name": "example.com",
  "created_at": "2022-10-02T14:08:07Z",
  "created_by": "iam-ServiceId-e4a2f0a4-3c76-4bef-b1f2-fbeae11c0f21",
  "crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/a5ebf2570dcaedf18d7ed78e216c263a:f1bc94a6-64aa-4c55-b00f-f6cd70e4b2ce:secret:cb7a2502-8ede-47d6-b5b6-1b7af6b6f563",
  "custom_metadata": {
    "metadata_custom_key": "metadata_custom_value"
  },
  "description": "Extended description for this secret.",
  "downloaded": true,
  "expiration_date": "2023-03-02T15:08:37Z",
  "id": "cb7a2502-8ede-47d6-b5b6-1b7af6b6f563",
  "issuer": "example.com",
  "key_algorithm": "RSA2048",
  "labels": [
    "dev",
    "us-south"
  ],
  "locks_total": 0,
  "name": "example-private-certificate",
  "next_rotation_date": "2022-03-02T14:08:07Z",
  "rotation": {
    "auto_rotate": false,
    "interval": 1,
    "unit": "month"
  },
  "secret_data": {
    "certificate": "-----BEGIN CERTIFICATE-----\nMIIE3jCCBGSgAwIBAgIUZfTbf3adn87l5J2Q2Aw+6Vk/qhowCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----",
    "issuing_ca": "-----BEGIN CERTIFICATE-----\nMIIE3jCCBGSgAwIBAgIUZfTbf3adn87l5J2Q2Aw+6Vk/qhowCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----",
    "ca_chain": [
      "-----BEGIN CERTIFICATE-----\nMIIE3jCCBGSgAwIBAgIUZfTbf3adn87l5J2Q2Aw+6Vk/qhowCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----"
    ],
    "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAqcRbzV1wp0nVrPtEpMtnWMO6Js1q3rhREZluKZfu0Q8SY4H3\n-----END RSA PRIVATE KEY-----"
  },
  "secret_group_id": "bc656587-8fda-4d05-9ad8-b1de1ec7e712",
  "secret_type": "private_cert",
  "serial_number": "03:e2:c6:e4:0b:7d:30:e2:e2:78:1b:b9:13:fd:f0:fc:89:dd",
  "signing_algorithm": "SHA256-RSA",
  "state": 1,
  "state_description": "active",
  "updated_at": "2022-03-02T14:08:37Z",
  "validity": {
    "not_before": "2022-03-02T15:08:37Z",
    "not_after": "2023-03-01T00:00:00Z"
  },
  "versions_total": 1
}

使用 Terraform 创建专用证书

以下示例显示可用于创建专用证书的配置。

    resource "ibm_sm_private_certificate" "test_private_certificate" {  
        instance_id = local.instance_id
        region = local.region
        name = "test-private-certificate"
        common_name = "my.example.com"
        certificate_template = ibm_sm_private_certificate_configuration_template.test_ca_template.name
        ttl = "90d"
    }

发出证书后,您可以将其部署到集成应用程序,下载或手动对其进行轮换。 有关必需和可选请求参数的更多信息,请参阅 API 参考