IBM Cloud Docs
导入 SSL/TLS 证书

导入 SSL/TLS 证书

您可以使用 IBM Cloud® Secrets Manager 来导入可用于应用程序或服务的 SSL/TLS 证书。

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

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

要了解有关可以在 Secrets Manager中管理的私钥类型的更多信息,请参阅 什么是私钥?

准备工作

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

在导入证书之前,请确保:

  • 使用匹配的专用密钥 (可选) 创建符合 X.509 的证书。
  • 将您的文件转换为隐私增强电子邮件(PEM)格式。
  • 请保持私钥未加密,以确保其可以导入到 Secrets Manager。

导入现有证书

您可以使用 Secrets Manager 来存储由外部认证中心签署和发放的证书文件。 导入证书文件后,可以将证书部署到应用程序和服务,下载证书,或者在需要更新时 手动轮换该证书

在 UI 中导入证书

您可以使用 Secrets Manager UI 来导入现有证书。

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

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

  3. 在“私钥”表中,单击 添加

  4. 单击下一步

  5. 添加名称和描述,以便轻松识别您的秘密。

  6. 选择要分配给私钥的 私钥组包含实例中的私钥的环境和约束必须遵守。 用户可以与一个秘密群组关联,以实现访问和协作。

    没有秘密小组吗 在 私钥组 字段中,可以单击 创建 以提供新组的名称和描述。 您的私钥将自动添加到新组中。 有关私钥组的更多信息,请查看 组织私钥

  7. 可选: 添加标签以帮助您在实例中搜索类似私钥。

  8. 可选: 将元数据添加到私钥或私钥的特定版本。

    1. 上载文件或以 JSON 格式输入元数据和版本元数据。
  9. 单击下一步

  10. 选择 “导入证书” 选项卡。

  11. 选择证书文件或输入其值。

您可以存储 PEM 格式的未到期 X.509 证书文件。 如果您正在使用不同格式的证书,那么可以使用命令行实用程序将证书转换为 .pem。 有关更多信息,请参阅 为什么无法导入证书?

  1. 可选: 选择专用密钥文件或输入其值。

如果选择存储专用密钥,请确保其与证书匹配。 必须先对专用密钥进行未加密,然后才能将其导入到服务中。

  1. 可选: 选择中间证书文件或输入其值。
  2. 单击下一步
  3. 查看证书的详细信息。
  4. 单击添加

从 CLI 导入证书

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

要使用 Secrets Manager CLI 插件导入证书,请运行 ibmcloud secrets-manager secret-create 命令。 例如,以下命令将导入证书及其专用密钥和中间证书。

您可以导入 .pem 格式的证书文件。 确保 将 PEM 文件转换为单行格式,以便可以通过 Secrets Manager CLI 正确解析这些文件。

certificate=$(cat cert.pem)
private_key=$(cat key.pem)

ibmcloud secrets-manager secret-create --secret-name=example-imported-cert-secret --secret-type=imported_cert --imported-cert-certificate ${certificate} --imported-cert-private-key ${private_key}

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

使用 API 导入证书

您可以通过调用 Secrets Manager API 以编程方式导入证书。

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

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

您可以导入 .pem 格式的证书文件。 确保 将 PEM 文件转换为单行格式,以便 Secrets Manager API 可以正确解析这些文件。

curl -X POST  
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
            "name": "example-imported-certificate",
            "description": "description of my imported certificate.",
            "secret_type": "imported_cert",
            "secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
            "labels": [
                "dev",
                "us-south"
            ],
            "certificate": "-----BEGIN CERTIFICATE-----\nMIIE3jCCBGSgAwIBAgIUZfTbf3adn87l5J2Q2Aw+6Vk/qhowCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----",
            "intermediate": "-----BEGIN CERTIFICATE-----\nMIIE3DCCBGKgAwIBAgIUKncnp6BdSUKAFGBcP4YVp/gTb7gwCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----",
            "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAqcRbzV1wp0nVrPtEpMtnWMO6Js1q3rhREZluKZfu0Q8SY4H3\n-----END RSA PRIVATE KEY-----",
            "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"

成功的响应将返回密钥的ID值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 创建私钥

使用 Terraform 导入证书

您可以使用 Terraform for Secrets Manager以编程方式导入证书。

以下示例显示可用于导入现有证书的查询。

    resource "ibm_sm_imported_certificate" "sm_imported_certificate" {
        instance_id = local.instance_id
        region = local.region
        name = "test-imported-certificate"
        secret_group_id = "default"
        certificate  = file("path_to_certificate_file")
        intermediate = file("path_to_intermediate_certificate_file")
        private_key  = file("path_to_private_key_file")
    }

创建证书签名请求

您可以使用导入证书密钥生成证书签名请求(CSR),然后使用证书颁发机构进行外部签名,并将其重新添加到导入证书密钥中。

导入证书密钥在预激活状态下创建。 要激活它,您需要下载CSR文件,用您的证书颁发机构签名,然后将签名后的证书作为新的秘密版本添加回去。

在用户界面中创建证书签名请求

您可以使用 Secrets Manager 用户界面创建证书签名请求。

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

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

  3. 在“私钥”表中,单击 添加

  4. 从秘密类型列表中,点击 “进口证书”板块

  5. 单击下一步

  6. 添加名称和描述,以便轻松识别您的秘密。

  7. 选择要分配给私钥的 私钥组包含实例中的私钥的环境和约束必须遵守。 用户可以与一个秘密群组关联,以实现访问和协作。

    没有秘密小组吗 在 私钥组 字段中,可以单击 创建 以提供新组的名称和描述。 您的私钥将自动添加到新组中。 有关私钥组的更多信息,请查看 组织私钥

  8. 可选: 添加标签以帮助您在实例中搜索类似私钥。

  9. 可选: 将元数据添加到私钥或私钥的特定版本。

    上载文件或以 JSON 格式输入元数据和版本元数据。

  10. 单击下一步

  11. 选择 “创建证书签名请求(CSR)”磁贴。

  12. 添加一个通用名称

  13. 可选:添加主题字段。

  14. 可选:选择关键算法。 如果没有选择,则使用RSA作为默认值。

  15. 可选:选择证书角色。

  16. 单击下一步

  17. 查看证书签名请求的详细信息。

  18. 单击添加

在用户界面中更新和下载证书签名请求

  1. 在您想要更新的秘密那一行,点击操作菜单 操作图标 > 详情

  2. “详细信息”页面中,使用 “托管企业社会责任”选项卡编辑证书签名请求字段。

    在更新通用名称或主题备选名称时,至少保留其中一个名称不变,以保持证书主题的一致性。

  3. 单击 Update(更新)。

  4. 打开“托管企业社会责任”选项卡,点击 “下载企业社会责任”,下载证书签名请求文件。

    在您准备好证书签名请求文件后,应联系您的签名证书颁发机构,并在CSR文件中签名,以获取签名证书。

在用户界面中重新添加签名证书

使用 “使用托管证书签名请求(CSR)手动轮换导入的证书”中描述的过程,将签名证书文件重新添加到您的 Secrets Manager 实例的密钥中。

使用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-csr",
            "description": "description of my csr.",
            "secret_type": "imported_cert",
            "secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
            "labels": [
                "dev",
                "us-south"
            ],
            "managed_csr": {
              "require_cn": true,
              "common_name": "example.com",
              "ip_sans": "127.0.0.1",
              "uri_sans": "https://www.example.com/test",
              "other_sans": "2.5.4.5;UTF8:*.example.com",
              "exclude_cn_from_sans": false
            },
            "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"

成功的响应将返回密钥的ID值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 创建私钥

使用API更新和下载证书签名请求

您可以通过调用 Secrets Manager API以编程方式更新证书签名请求。
调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。

curl -X POST  
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
            "name": "example-csr",
            "description": "description of my csr.",
            "secret_type": "imported_cert",
            "secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
            "labels": [
                "dev",
                "us-south"
            ],
            "managed_csr": {
              "alt_names": "alt1"
            }
        }' \
    "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

成功的响应将返回密钥的ID值以及其他元数据。 有关必需和可选请求参数的更多信息,请参阅 创建私钥

使用API将签名证书重新添加

使用 手动轮换导入证书 中描述的过程,将签名证书文件重新添加到您的 Secrets Manager 实例中。

从命令行界面创建证书签名请求

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

要使用 Secrets Manager CLI插件创建证书签名请求,请运行 ibmcloud secrets-manager secret-create 命令。 例如,以下命令创建一个证书签名请求,其中包含 --imported-cert-managed-csr 选项,用于添加字段 common_name,值为 example.com。 查看 Secrets Manager API文档,获取所支持可选主题字段的完整列表。

ibmcloud secrets-manager secret-create --secret-name=example-imported-cert-csr-secret --secret-type=imported_cert --imported-cert-managed-csr='{"common_name":"example.com"}'

从CLI更新和下载证书签名请求

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

要使用 Secrets Manager CLI插件更新证书签名请求,请运行 ibmcloud secrets-manager secret-metadata-update 命令。 例如,以下命令使用 --imported-cert-managed-csr 选项更新证书签名请求,添加字段 alt_names,值为 alt1。 查看 Secrets Manager API文档,获取所支持可选主题字段的完整列表。

ibmcloud secrets-manager secret-metadata-update --id SECRET_ID --imported-cert-managed-csr='{"alt_names":"alt1"}'

要使用 Secrets Manager CLI插件获取证书签名请求,请运行 ibmcloud secrets-manager secret-metadata 命令。

ibmcloud secrets-manager secret-metadata --id SECRET_ID

从CLI中添加签名证书

使用 手动轮换导入证书 中描述的过程,将签名证书文件重新添加到您的 Secrets Manager 实例中。