IBM Cloud Docs
订购 SSL/TLS 公用证书

订购 SSL/TLS 公用证书

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

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

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

准备工作

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

在订购证书之前,请确保:

  • 准备实例以订购证书
  • 查看可用的认证中心和 DNS 提供程序配置。 要查看为实例定义的配置,请转至 Secrets Manager UI 中的“密钥引擎> 公用证书”页面。

要使用当前未与服务集成的 DNS 提供程序,您不需要添加配置来订购公用证书。

订购公用证书

为实例 配置公用证书引擎 后,可以使用 Secrets Manager 从 Let 's Encrypt 请求公用 SSL/TLS 证书。 在向您发放证书之前,Secrets Manager 使用域验证来验证域的所有权。 订购证书时:

  • Secrets Manager 将您的请求发送到所选认证中心。 证书的状态将更改为 预激活,以指示正在处理您的请求。

  • 如果验证成功完成,那么将发出您的证书,并且其状态将更改为 活动

  • 如果验证未成功完成,那么证书状态将更改为 已取消激活。 从私钥表中,可以通过单击 操作 图标 "操作" 图标 > 查看详细信息来检查证书的发放详细信息。

  • 如果验证未成功完成,那么证书状态将更改为 已取消激活。 从私钥表中,可以通过单击 操作 图标 "操作" 图标 > 查看详细信息来检查证书的发放详细信息。

  • 如果验证未成功完成,那么证书状态将更改为 已取消激活。 您可以使用 获取私钥元数据 API 来检查 resources.issuance_info 字段以获取有关证书的发放详细信息。

  • 发出证书后,您可以将其部署到集成应用程序,下载或修改其轮换选项。

在 UI 中使用集成 DNS 提供程序订购公用证书

您可以使用 Secrets Manager UI 来订购证书。

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

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

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

  4. 单击 订购公用证书 磁贴。

  5. 添加名称和描述以轻松识别证书。

  6. 选择要分配给密文的密文组。

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

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

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

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

  10. 选择证书颁发机构配置。

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

  11. 选择要用于为证书生成公用密钥的密钥算法。

您选择的密钥算法确定要用于生成密钥和签署证书的加密算法 (RSAECDSA) 和密钥大小。 对于寿命更长的证书,建议使用更长的密钥长度来提供更多的加密保护。 选项包括 RSA2048RSA4096ECDSA256ECDSA384

  1. 可选: 为证书启用高级选项。

  2. 要将已发放的证书与中间证书捆绑在一起,请将捆绑开关切换到 开启。 捆绑证书后,无法再将其取消捆绑。 如果选择不捆绑证书,那么只能通过创建新私钥来更改此私钥。

  3. 要对证书启用自动旋转,请将旋转切换开关切换到 开启。 证书在到期前 31 天轮换。

  4. 要在每次轮换时请求具有证书的新专用密钥,请将再加密开关切换到 开启

  5. 选择 DNS 提供程序配置。

您选择的配置将确定 DNS 提供程序以验证域的所有权。 要查看为实例定义的配置,可以转至 密钥引擎> 公用证书

  1. 添加要包含在请求中的域。

  2. 单击 选择域

  3. 从域列表中,选择证书的公共名称。

    通用名称为可选输入项。 如果未明确指定通用名称,Let's encrypt会自动分配第一个不超过64个字符的备用名称作为通用名称。 如果没有找到这样的别名,证书将在没有通用名的情况下签发。

    您也可以选择使用 手动添加域字段手动添加有效域。

  4. 单击下一步

  5. 查看证书的详细信息。

  6. 单击添加

订购证书时,将进行域验证以验证所选域的所有权。 此过程可能需要几分种才能完成。 在您提交证书详细信息后,Secrets Manager 会将您的请求发送至选定的证书颁发机构。 发出证书后,您可以将其部署到集成应用程序,下载或手动对其进行轮换。 SSL/TLS 的专用密钥直接在 Secrets Manager 中生成并安全存储。

需要检查订单状态吗? 从私钥表中,可以通过单击 操作 图标 "操作" 图标 > 查看详细信息来检查证书的发放详细信息。

从 CLI 订购具有集成 DNS 提供程序的公用证书

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

要使用 Secrets Manager CLI 插件来订购具有集成 DNS 提供程序的公用证书,请运行 ibmcloud secrets-manager secret-create command.For,以下命令将从您指定的认证中心请求公用证书密钥。

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

ibmcloud secrets-manager secret-create --secret-prototype=
'{
    "name": "example-public-certificate",
    "description": "Extended description for this secret.",
    "secret_type": "public_cert",
    "secret_group_id": "bc656587-8fda-4d05-9ad8-b1de1ec7e712",
    "labels": [
        "dev","us-south"
    ],
    "dns": "dns_provider",
    "common_name": "cert_common_name"
    "alt_names": [
        "alt_name1", "alt_name2"
    ],
    "ca": "lets-encrypt-config",
    "key_algorithm": "RSA2048",
    "rotation": {
        "auto_rotate": true,
        "rotate_keys":false
        },
    "custom_metadata" : {
        "anyKey" : "anyValue"
    },
    "version_custom_metadata" : {
        "anyKey" : "anyValue"
    }
}

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

使用 API 对具有集成 DNS 提供程序的公用证书进行排序

您可以通过调用 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-public-certificate",
            "description": "Description of my public certificate",
            "secret_type": "public_cert",
            "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
            "labels": [
                "dev",
                "us-south"
            ],
            "common_name": "example.com",
            "alt_names": [
                "s1.example.com",
                "*.s2.example.com"
            ],
            "ca": "lets-encrypt-config",
            "dns": "cloud-internet-services-config",
            "rotation": {
                "auto_rotate": true,
                "rotate_keys": true
            },
            "bundle_certs": true,
            "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"

当您提交证书详细信息时,Secrets Manager 会将您的请求发送到所选的证书颁发机构。 发出证书后,您可以将其部署到集成应用程序,下载或手动对其进行轮换。 SSL/TLS 的专用密钥直接在 Secrets Manager 中生成并安全存储。 有关必需和可选请求参数的更多信息,请参阅 创建私钥

需要检查订单状态吗? 使用 获取私钥元数据 API 来检查 resources.issuance_info 字段以获取有关证书的发放详细信息。

使用 Terraform 订购具有集成 DNS 提供程序的公用证书

以下示例显示可用于订购公用证书的配置。

    resource "ibm_sm_public_certificate" "sm_public_certificate" {
        instance_id = local.instance_id
        region = local.region
        name = "test-public-certificate"
        secret_group_id = "default"
        ca = ibm_sm_public_certificate_configuration_ca_lets_encrypt.my_lets_encrypt_config.name
        dns = ibm_sm_public_certificate_configuration_dns_cis.my_cis_dns_config.name
        rotation {
            auto_rotate = true
            rotate_keys = false
        }
    }

在 UI 中使用您自己的 DNS 提供程序订购公用证书

要在 UI 中使用手动 DNS 提供程序来创建公用证书,请完成以下步骤。

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

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

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

  4. 单击 订购公用证书 磁贴。

  5. 添加名称和描述以轻松识别证书。

  6. 选择要分配给密文的密文组。

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

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

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

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

  10. 选择证书颁发机构配置。

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

  1. 选择要用于为证书生成公用密钥的密钥算法。

您选择的密钥算法确定要用于生成密钥和签署证书的加密算法 (RSAECDSA) 和密钥大小。 对于寿命更长的证书,建议使用更长的密钥长度来提供更多的加密保护。 选项包括 RSA2048RSA4096ECDSA256ECDSA384

  1. 可选: 为证书启用高级选项。
  2. 要将已发放的证书与中间证书捆绑在一起,请将捆绑开关切换到 开启。 捆绑证书后,无法再将其取消捆绑。 如果选择不捆绑证书,那么只能通过创建新私钥来更改此私钥。
  3. 要在每次轮换时请求具有证书的新专用密钥,请将再加密开关切换到 开启
  4. 选择 手动 作为 DNS 提供程序。
  5. 添加要包含在请求中的域。

最多可以包含 100 个域,子域或通配符。 证书的公共名称或标准域名长度不能超过 64 个字符。 可以选择通配符作为公共名称。

  1. 公共名称 部分中,从域列表中选择证书的公共名称。
  2. 单击下一步
  3. 查看证书的详细信息。
  4. 单击添加
  5. 通过单击 操作 图标 "操作" 图标 > 查看详细信息来检查证书的发放详细信息。
  6. 单击 挑战 以访问与每个域关联的 TXT 记录名称和值。 您需要他们来完成挑战。
  7. 要验证域的所有权,请将为每个域提供的 TXT 记录手动添加到 DNS 提供者帐户。 您必须仅解决在到期日期之前未验证的问题。

如果为子域 (例如,sub1.sub2.domain.com) 订购证书,那么需要将 TXT 记录添加到已注册的域 domain.com

  1. 验证您添加到域的 TXT 记录是否已传播。 根据您的 DNS 提供程序,可能需要一些时间才能完成。
  2. 确认已传播记录后,单击 验证 以请求 Let 's Encrypt 验证对域的提问并创建公用证书。

如果由于未成功传播 TXT 记录而导致订单失败,那么必须启动新订单才能继续。

  1. 发出证书后,请从 DNS 提供者帐户中的域中清除 TXT 记录并将其除去。

使用 API 订购具有您自己的 DNS 提供者的公用证书

要使用手动 DNS 提供程序创建公用证书,请完成以下步骤。

  1. 通过执行 添加 CA 配置 中定义的步骤来创建认证中心 (CA) 配置。

  2. 通过将 manual 指定为 DNS 配置来创建新的公用证书。

     curl -X POST
         -H "Authorization: Bearer {iam_token}" \
         -H "Accept: application/json" \
         -H "Content-Type: application/json" \
         -d '{
                 "name": "example-public-certificate",
                 "description": "description of my public certificate",
                 "secret_type": "public_cert",
                 "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
                 "labels": [
                     "dev",
                     "us-south"
                 ],
                 "common_name": "example.com",
                 "alt_names": [
                     "s1.example.com",
                     "*.s2.example.com"
                 ],
                 "ca": "lets-encrypt-config",
                 "dns": "manual",
                 "rotation": {
                     "auto_rotate": true,
                     "rotate_keys": true
                 },
                 "bundle_certs": true,
                 "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"
    

    示例响应:

    "metadata": {
       "collection_type": "application/vnd.ibm.secrets-manager.secret+json",
       "collection_total": 1
     },
    "resources": [
     {
       "alt_names": [
         "domain2",
         "domain3"
       ],
       "common_name": "domain1",
       "created_by": "User",
       "creation_date": "2022-09-13T06:21:33Z",
       "crn": "secret crn",
       "description": "Description for ordered certificate.",
       "downloaded": false,
       "id": "38747ae6-8c69-d745-5276-cdf3157b9021",
       "issuance_info": {
       "auto_rotated": false,
       "bundle_certs": false,
       "ca": "ca_config_name",
       "challenges": [
         {
             "domain": "domain1",
             "expiration": "2022-09-20T06:21:36Z",
             "status": "pending",
             "txt_record_name": "_acme-challenge.domain1.",
             "txt_record_value": "TA6J7fFYrwP3Jg-S_IAQSj2Ydqfw4Ycm4sMwlzuCcxk"
         },
             {
                "domain": "domain2",
                "expiration": "2022-09-20T06:21:36Z",
                "status": "pending",
                "txt_record_name": "_acme-challenge.domain2.",
                "txt_record_value": "qSDrCkFAViX4xANKuEPcMNairWm1PUtROm6kp9bmSS0"
             },
             {
                "domain": "domain3",
                "expiration": "2022-09-20T06:21:36Z",
                "status": "pending",
                "txt_record_name": "_acme-challenge.domain3.",
                "txt_record_value": "8dcgan91fW6aK3aIhPAVZRkHpbYEoMcCNPpVh1n4tSA"
             }
          ],
       "dns": "manual",
       "ordered_on": "2022-09-13T06:21:33Z",
       "state": 0,
       "state_description": "Pre-activation"
       },
       "key_algorithm": "RSA2048",
       "labels": [],
       "last_update_date": "2022-09-13T06:21:33Z",
       "locks_total": 0,
       "name": "my-public-certificate",
       "rotation": {
       "auto_rotate": false,
       "rotate_keys": false
       },
       "secret_type": "public_cert",
       "state": 0,
       "state_description": "Pre-activation",
       "versions": [],
       "versions_total": 1
       }
    ]
    
  3. 通过将在提问中指定的 TXT 记录添加到 DNS 提供者帐户中的域以验证您对域的所有权,在这些提问到期之前完成标记为 pending 的提问。

    如果为子域 (例如,sub1.sub2.domain.com) 订购证书,那么需要将 TXT 记录添加到已注册的域 domain.com

  4. 验证您添加的 TXT 记录是否已传播。 根据您的 DNS 提供程序,可能需要一些时间才能完成。

  5. 传播记录后,请调用 Secrets Manager 创建私钥操作 API 以请求 Let 's Encrypt 来验证对域的提问并创建公用证书。

     curl -X POST
     --header "Authorization: Bearer {iam_token}"
     --header "Accept: application/json"
     --header "Content-Type: application/json"
     --data '{
         "action_type": "public_cert_action_validate_dns_challenge"
     }'\
     "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/actions"
    

    如果需要稍后更新证书,那么可以使用 创建私钥操作 API,但使用操作 rotate。 但是,无法在 Secrets Manager中自动轮换手动 DNS 提供程序证书。

  6. 发出证书后,请从 DNS 提供者帐户中的域中清除 TXT 记录并将其除去。

要自动创建公用证书吗? 如果通过 DNS 提供程序配置域,那么可以创建脚本来完成提问。 某些 DNS 提供程序提供了一个 API,用于检查新记录是否已完全传输。 如果 DNS 提供程序不提供此选项,那么可以将客户机配置为等待指定的时间量,有时最多一个小时。 在 Secrets Manager中,调用 validate-dns-challenges 后,可以通过获取证书元数据来检查证书发放的状态。 当返回的 IssuanceInfo.State 字段更改为 active 时,将发出证书。

使用 CLI 订购具有您自己的 DNS 提供者的公用证书

要使用 Secrets Manager CLI 插件订购具有您自己的 DNS 提供程序的公用证书,请运行 ibmcloud secrets-manager secret-create 命令。 例如,以下命令从您指定的认证中心请求公用证书私钥。

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

ibmcloud secrets-manager secret-create --secret-prototype \
'{
    "name": "example-public-certificate",
    "description": "Extended description for this secret.",
    "secret_group_id": "bc656587-8fda-4d05-9ad8-b1de1ec7e712",
    "labels": [
        "dev","us-south"
    ],
    "dns": "manual",
    "common_name": "cert_common_name"
    "alt_names": [
        "alt_name1", "alt_name2"
    ],
    "ca": "lets-encrypt-config",
    "key_algorithm": "RSA2048",
    "rotation": {
        "enabled": false,
        "rotate_keys":false
        },
    "custom_metadata" : {
        "anyKey" : "anyValue"
    },
    "version_custom_metadata" : {
        "anyKey" : "anyValue"
    }
}

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

使用 Terraform 订购具有 Akamai DNS 提供程序的公用证书

要使用 Akamai 作为 DNS 提供者来创建公用证书,请完成以下步骤。

  1. 通过执行 添加 CA 配置 中定义的步骤来创建认证中心 (CA) 配置。

  2. 通过将 akamai 指定为 DNS 配置来创建新的公用证书。

  3. 请使用以下Akamai认证方法之一。 您可以使用 edgerc 文件或直接提供 Akamai 认证凭证。 了解有关 Akamai 认证凭证的更多信息

    1. 提供 .edgerc 文件和相关 config_section 的路径。

      		resource "ibm_sm_public_certificate" "sm_public_certificate" {
      				instance_id = local.instance_id
      				region = local.region
      				name = "test-public-certificate"
      				secret_group_id = "default"
      				ca = ibm_sm_public_certificate_configuration_ca_lets_encrypt.my_lets_encrypt_config.name
      				dns = “akamai”
      				akamai {
      					edgerc {
      						path_to_edgerc = “/path/to/your/edgerc/file”
      						config_section = “default”
      					}
      				}
      				rotation {
      					auto_rotate = true
      					rotate_keys = false
      				}
      		}
      
      
      
    	2. Provide your Akamai's authentication credentials.
    
    		```terraform {: pre}
    			resource "ibm_sm_public_certificate" "sm_public_certificate" {
    					instance_id = local.instance_id
    					region = local.region
    					name = "test-public-certificate"
    					secret_group_id = "default"
    					ca = ibm_sm_public_certificate_configuration_ca_lets_encrypt.my_lets_encrypt_config.name
    					dns = “akamai”
    					akamai {
    						config {
    							client_secret = “your_client_secret”
    							host = “your_host”
    							access_token = "your_access_token"
    							client_token = "your_client_token"
    						}
    					}
    					rotation {
    						auto_rotate = true
    						rotate_keys = false
    					}
    			}
    

在Akamai相关域中新创建的TXT记录不会被自动删除。

使用 Terraform 订购具有您自己的 DNS 提供者的公用证书

  1. 通过执行 添加 CA 配置 中定义的步骤来创建认证中心 (CA) 配置。

  2. 通过将 manual 指定为 DNS 配置来创建新的公用证书。

    resource "ibm_sm_public_certificate" "sm_public_certificate" {
        instance_id = local.instance_id
        region = local.region
        name = "test-public-certificate"
        secret_group_id = "default"
        ca = ibm_sm_public_certificate_configuration_ca_lets_encrypt.my_lets_encrypt_config.name
        dns = “manual”
        rotation {
            auto_rotate = true
            rotate_keys = false
        }
    }

示例响应:

{
   "alt_names": [
     "domain2",
     "domain3"
   ],
   "bundle_certs": false,
   "ca": "ca_config_name",
   "common_name": "domain1",
   "created_by": "User",
   "creation_date": "2022-09-13T06:21:33Z",
   "crn": "secret crn",
   "description": "Description for ordered certificate.",
   "downloaded": false,
   "id": "38747ae6-8c69-d745-5276-cdf3157b9021",
   "issuance_info": {
       "auto_rotated": false,
       "challenges": [
         {
             "domain": "domain1",
             "expiration": "2022-09-20T06:21:36Z",
             "status": "pending",
             "txt_record_name": "_acme-challenge.domain1.",
             "txt_record_value": "TA6J7fFYrwP3Jg-S_IAQSj2Ydqfw4Ycm4sMwlzuCcxk"
         },
             {
               "domain": "domain2",
               "expiration": "2022-09-20T06:21:36Z",
               "status": "pending",
               "txt_record_name": "_acme-challenge.domain2.",
               "txt_record_value": "qSDrCkFAViX4xANKuEPcMNairWm1PUtROm6kp9bmSS0"
             },
             {
               "domain": "domain3",
               "expiration": "2022-09-20T06:21:36Z",
               "status": "pending",
               "txt_record_name": "_acme-challenge.domain3.",
               "txt_record_value": "8dcgan91fW6aK3aIhPAVZRkHpbYEoMcCNPpVh1n4tSA"
             }
         ],
       "dns": "manual",
       "ordered_on": "2022-09-13T06:21:33Z",
       "state": 0,
       "state_description": "Pre-activation"
       },
   "key_algorithm": "RSA2048",
   "labels": [],
   "last_update_date": "2022-09-13T06:21:33Z",
   "locks_total": 0,
   "name": "my-public-certificate",
   "rotation": {
       "auto_rotate": false,
       "rotate_keys": false
    },
   "secret_type": "public_cert",
   "state": 0,
   "state_description": "Pre-activation",
   "versions": [],
   "versions_total": 1
}
  1. 通过将在提问中指定的 TXT 记录添加到 DNS 提供者帐户中的域以验证您对域的所有权,在这些提问到期之前完成标记为 pending 的提问。

    如果为子域 (例如,sub1.sub2.domain.com) 订购证书,那么需要将 TXT 记录添加到已注册的域 domain.com

  2. 验证您添加的 TXT 记录是否已传播。 根据您的 DNS 提供程序,可能需要一些时间才能完成。

  3. 传播记录后,请求 Let 's Encrypt 验证对域的提问并创建公用证书。 您可以使用 Terraform 的 ibm_sm_public_certificate_action_validate_manual_dns 资源来执行此操作,如以下配置示例中所示:

    resource "ibm_sm_public_certificate_action_validate_manual_dns" "sm_public_certificate_action_validate_manual_dns_instance" {
        instance_id = local.instance_id
        region = local.region
        secret_id = ibm_sm_public_certificate.sm_public_certificate.secret_id
    }

您可以使用 Terraform 的 depends_on 元参数 来确保以正确的逻辑顺序创建 Terraform 的配置,如以下指示信息中所示。

或者,您可以调用 Secrets Manager 创建私钥操作 API 以请求 Let 's Encrypt 来验证对域的挑战并创建公用证书。

 curl -X POST
 --header "Authorization: Bearer {iam_token}"
 --header "Accept: application/json"
 --header "Content-Type: application/json"
 --data '{
     "action_type": "public_cert_action_validate_dns_challenge"
 }'\
 "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/actions"
  1. 证书颁发后(状态为 active ),您必须再次运行Terraform命令 terraform apply,以更新您的公共证书的Terraform资源,并使用新颁发的证书。

  2. 清除 DNS 提供者帐户中的域中的 TXT 记录并将其除去。