建立 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 使用者介面中的 密鑰引擎> 專用憑證 頁面。
  • 檢閱可用於所選中間 CA 的 憑證範本

當您建立專用憑證時,需要選取範本。 視您選擇的範本而定,可能會套用專用憑證的部分限制。 若要檢視針對中繼 CA 定義的範本,請跳至 Secrets Manager 使用者介面中的 密鑰引擎> 專用憑證 頁面。 展開您要用作專用憑證發行管理中心的中間 CA 列,然後按一下 範本 以檢閱可用的範本。

建立專用憑證

配置實例的專用憑證引擎 之後,您可以使用 Secrets Manager,使用先前為 Secrets Manager 服務實例配置的內部憑證管理中心來產生專用憑證。 在可以向您發出憑證之前,Secrets Manager 會檢查以確保您的憑證申請符合為您選取的 憑證範本 定義的限制。 發出憑證之後,您可以將它部署至整合應用程式、下載它、撤銷它或手動輪替它。

在使用者介面中建立專用憑證

您可以使用 Secrets Manager 使用者介面來建立專用憑證。

  1. 在主控台中,按一下 功能表 圖示 「功能表」圖示 > 資源清單
  2. 從服務清單中,選取 Secrets Manager的實例。
  3. 密鑰 表格中,按一下 新增
  4. 按一下 建立專用憑證 磚。
  5. 下一步
  6. 新增名稱及說明,以輕鬆識別您的憑證。
  7. 選用項目: 新增標籤以協助您在實例中搜尋類似的密鑰。
  8. 選用項目: 將 meta 資料新增至密鑰或密鑰的特定版本。
    1. 上傳檔案或以 JSON 格式輸入 meta 資料及版本 meta 資料。
  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-name example-private-certificate \
    --secret-description "Extended description for this secret." \
    --secret-type private_cert \
    --secret-group-id bc656587-8fda-4d05-9ad8-b1de1ec7e712 \
    --secret-labels dev,us-south \
    --private-cert-template-name example-certificate-template \
    --certificate-common-name cert_common_name \
    --secret-rotation '{"enabled": false, "rotate_keys": false}' \
    --secret-custom-metadata '{"anyKey": "anyValue"}' \
    --secret-version-custom-metadata '{"anyKey": "anyValue"}' \
    --secret-expiration-date 2030-01-01T00:00:00Z

指令會輸出密鑰的 ID 值,以及其他 meta 資料。 如需指令選項的相關資訊,請參閱 ibmcloud secrets-manager secret-create

使用 API 建立專用憑證

您可以透過呼叫 Secrets Manager API,以程式化方式產生專用憑證。

下列範例顯示可用來建立專用憑證的查詢。 當您呼叫 API 時,請將 ID 變數及 IAM 記號取代為 Secrets Manager 實例特定的值。

您可以使用 custom_metadataversion_custom_metadata 要求參數來儲存與組織需求相關的 meta 資料。 僅針對密鑰版本傳回 version_custom_metadata 的值。 密鑰的自訂 meta 資料會儲存為最多 50 個版本的所有其他 meta 資料,而且您不得包含機密資料。

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 參考資料

成功的要求會傳回專用憑證的內容,以及由憑證範本及發出憑證管理中心所決定的其他 meta 資料。

{
  "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 參考資料

若要自動化私人憑證的建立與管理,請使用 Terraform IBM Modules (TIM) for Secrets Manager Private Certificate for infrastructure as code。 有關實施指引,請參閱 Terraform IBM 模組