导入 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 来导入现有证书。
-
在控制台中,单击 菜单 图标
> 资源列表。
-
从服务列表中,选择 Secrets Manager的实例。
-
在“私钥”表中,单击 添加。
-
单击下一步。
-
添加名称和描述,以便轻松识别您的秘密。
-
选择要分配给私钥的 私钥组包含实例中的私钥的环境和约束必须遵守。 用户可以与一个秘密群组关联,以实现访问和协作。 。
没有秘密小组吗 在 私钥组 字段中,可以单击 创建 以提供新组的名称和描述。 您的私钥将自动添加到新组中。 有关私钥组的更多信息,请查看 组织私钥。
-
可选: 添加标签以帮助您在实例中搜索类似私钥。
-
可选: 将元数据添加到私钥或私钥的特定版本。
- 上载文件或以 JSON 格式输入元数据和版本元数据。
-
单击下一步。
-
选择 “导入证书” 选项卡。
-
选择证书文件或输入其值。
您可以存储 PEM 格式的未到期 X.509 证书文件。 如果您正在使用不同格式的证书,那么可以使用命令行实用程序将证书转换为 .pem
。 有关更多信息,请参阅 为什么无法导入证书?
- 可选: 选择专用密钥文件或输入其值。
如果选择存储专用密钥,请确保其与证书匹配。 必须先对专用密钥进行未加密,然后才能将其导入到服务中。
- 可选: 选择中间证书文件或输入其值。
- 单击下一步。
- 查看证书的详细信息。
- 单击添加。
从 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_metadata
和 version_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 用户界面创建证书签名请求。
-
在控制台中,单击 菜单 图标
> 资源列表。
-
从服务列表中,选择 Secrets Manager的实例。
-
在“私钥”表中,单击 添加。
-
从秘密类型列表中,点击 “进口证书”板块。
-
单击下一步。
-
添加名称和描述,以便轻松识别您的秘密。
-
选择要分配给私钥的 私钥组包含实例中的私钥的环境和约束必须遵守。 用户可以与一个秘密群组关联,以实现访问和协作。 。
没有秘密小组吗 在 私钥组 字段中,可以单击 创建 以提供新组的名称和描述。 您的私钥将自动添加到新组中。 有关私钥组的更多信息,请查看 组织私钥。
-
可选: 添加标签以帮助您在实例中搜索类似私钥。
-
可选: 将元数据添加到私钥或私钥的特定版本。
上载文件或以 JSON 格式输入元数据和版本元数据。
-
单击下一步。
-
选择 “创建证书签名请求(CSR)”磁贴。
-
添加一个通用名称。
-
可选:添加主题字段。
-
可选:选择关键算法。 如果没有选择,则使用RSA作为默认值。
-
可选:选择证书角色。
-
单击下一步。
-
查看证书签名请求的详细信息。
-
单击添加。
在用户界面中更新和下载证书签名请求
-
在您想要更新的秘密那一行,点击操作菜单
> 详情。
-
在 “详细信息”页面中,使用 “托管企业社会责任”选项卡编辑证书签名请求字段。
在更新通用名称或主题备选名称时,至少保留其中一个名称不变,以保持证书主题的一致性。
-
单击 Update(更新)。
-
打开“托管企业社会责任”选项卡,点击 “下载企业社会责任”,下载证书签名请求文件。
在您准备好证书签名请求文件后,应联系您的签名证书颁发机构,并在CSR文件中签名,以获取签名证书。
在用户界面中重新添加签名证书
使用 “使用托管证书签名请求(CSR)手动轮换导入的证书”中描述的过程,将签名证书文件重新添加到您的 Secrets Manager 实例的密钥中。
使用API创建证书签名请求
您可以通过调用 Secrets Manager API以编程方式创建证书签名请求。
调用 API 时,请将标识变量和 IAM 令牌替换为特定于 Secrets Manager 实例的值。
您可以使用 custom_metadata
和 version_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 实例中。