创建 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
)。
准备工作
开始之前,请确保您具有所需的访问级别。 要创建或添加私钥,您需要 写入者 服务角色或更高级别的。
在创建专用证书之前,请确保:
创建专用证书时,需要选择模板。 根据您选择的模板,可能会应用专用证书的一些限制。 要查看为中间 CA 定义的模板,请转至 Secrets Manager UI 中的“密钥引擎> 专用证书”页面。 展开要用作专用证书发放机构的中间 CA 的行,然后单击 模板 以查看可用的模板。
创建专用证书
为实例 配置专用证书引擎 后,可以使用 Secrets Manager 通过使用先前为 Secrets Manager 服务实例配置的内部认证中心来生成专用证书。 在可以向您发放证书之前,Secrets Manager 会进行检查,以确保您的证书请求符合为您选择的 证书模板 定义的限制。 发放证书后,可以将其部署到集成应用程序,下载,撤销或手动对其进行轮换。
在 UI 中创建专用证书
您可以使用 Secrets Manager UI 来创建专用证书。
- 在控制台中,单击 菜单 图标
> 资源列表。
- 从服务列表中,选择 Secrets Manager的实例。
- 在“私钥”表中,单击 添加。
- 单击 创建专用证书 磁贴。
- 单击下一步。
- 添加名称和描述以轻松识别证书。
- 可选: 添加标签以帮助您在实例中搜索类似私钥。
- 可选: 将元数据添加到私钥或私钥的特定版本。
- 上载文件或输入 JSON 格式的元数据和版本元数据。
- 单击下一步。
- 选择证书颁发机构配置。
您选择的配置将确定用于签署和发放证书的认证中心。 要查看为实例定义的配置,可以转至 密钥引擎> 专用证书。
- 选择 证书模板。
您选择的模板确定要应用于所生成证书的参数。 要查看为所选认证中心定义的证书模板的详细信息,可以转至 密钥引擎> 专用证书。 从认证中心列表中,展开要用作专用证书的颁发机构的 CA 行,然后单击 模板。 12. 可选: 对证书启用自动轮换。
要启用自动旋转,请将旋转开关切换为 开启。 选择用于指定调度轮换之间的天数的时间间隔和单位。
根据您在以下步骤中选择的证书模板,可能会应用对专用证书的轮换时间间隔的一些限制。 例如,旋转时间间隔不能超过模板中定义的生存时间 (TTL)。 有关更多信息,请参阅 证书模板。
- 必需: 指定证书的公共名称。
根据您选择的证书模板,可能会对通用名称有一些限制。 要查看所选证书模板的详细信息,可以转至 密钥引擎> 专用证书。 从认证中心列表中,展开要用作专用证书的颁发机构的 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_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-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 参考。