ルート認証局の作成

IBM Cloud® Secrets Manager を使用すると、ルート認証局および中間認証局 (CA) を作成することにより、独自の公開鍵インフラストラクチャー (PKI) システムを構築して管理することができます。

認証局 (CA) は、SSL/TLS 証明書に署名して発行するエンティティーです。 自己署名証明書を素早く生成したい場合は、 Secrets Manager、内部署名付きルートCAを作成することができます。 この CA を証明書チェーンのトラスト・アンカーとして使用できます。 インスタンスのルート認証局を作成した後、この認証局を下位認証局、例えばサービス内で作成する他の中間認証局に署名するために使用することができる。

インスタンスごとに最大 10 個のルート認証局を作成できます。 インスタンスで使用可能な構成のリストを表示するには、Secrets Manager UI の**「秘密エンジン」>「秘密証明書」**ページに移動します。

開始前に

開始する前に、必要なレベルのアクセス権限を持っていることを確認してください。 インスタンスのエンジン構成を管理するには、マネージャー・サービス・ロールまたはそれ以上が必要です。

UI でのルート認証局の作成

Secrets Manager UI を使用して、サービス・インスタンスの内部署名付きルート認証局を作成できます。

  1. コンソールで、**「メニュー」**アイコン「メニュー」アイコン **>「リソース・リスト」**をクリックします。

  2. サービスのリストから、Secrets Manager のインスタンスを選択します。

  3. シークレット・エンジンページで、プライベート証明書タブをクリックします。

  4. 「認証局」テーブルで、認証局の作成をクリックして作成ウィザードを開始します。

  5. 認証局のタイプとオプションを指定します。

    1. 権限タイプとしてルート認証局を選択します。
    2. 認証局を簡単に識別するための名前を入力します。
    3. この CA に対して生成される証明書の最大存続時間 (TTL) を選択します。 TTL は、CA 証明書が有効である期間を決定します。
    4. チェーン内に存在できる従属または下位の中間証明書の最大数を選択します。
    5. 発行元 CA 証明書の URL を中間 CA 証明書にエンコードするには、URL のエンコードオプションを有効に設定します。
  6. ルート CA 証明書のサブジェクト名フィールドを入力します。

  7. 鍵管理サービスを選択する。 サービス内部でルート認証局鍵を作成する場合はSecrets Managerサービスを選択するか、Hyper Protect Crypto Services(HPCS)を選択します。 HPCSを選択した場合は、以下の作業を行う:

    1. HPCSインスタンスを選択するか、HPCSインスタンスのCRNを手動で入力します

    2. HPCS で認証するために先に作成した IAM 資格情報の秘密を選択します。

      IAM クレデンシャルが一旦 CA 構成に設定されると、後から置き換えることはできない。

    3. キーストアリストからHPCSプライベートキーストアを選択するか、キーストアIDを手動で入力します。

    4. 既存のキーを使用するか、新しいキーを生成するかを選択する。 既存のHPCS秘密鍵を選択する場合、または秘密鍵IDを手動で入力する場合は、公開鍵が存在し、それが秘密鍵ストア内の秘密鍵と同じIDであることを確認してください。

      新しい鍵を生成することを選択した場合、これらの鍵は、コンフィギュレーションが削除されても Secrets Manager によって削除されることはない。

  8. CA 証明書の公開鍵と秘密鍵を生成するために使用する鍵アルゴリズムの選択

  9. CA 証明書の証明書失効リスト (CRL) の作成および配布ポイントを有効にするかどうかを決定します。

    CRLは、予定された有効期限前に発行認証局によって失効された証明書のリストである。 CRL の一部としてリストされている証明書は、アプリケーションによって信頼できなくなります。

    1. 証明書要求ごとにルートCAのCRLを構築するには、 CRL構築オプションを「 Enabled 」に設定する。
    2. ルート CA 証明書の失効リストの URL をエンコードするには、CRL 配布ポイントオプションを有効に設定します。
    3. 生成された CRL の存続時間 (TTL) を選択します。 TTL は、CRL が有効である期間を決定します。
  10. 選択内容を確認します。 ルート CA を作成するには、作成をクリックします。

これで、内部署名を使用した中間 CA の作成時にこのルート CA を選択できます。 既存の構成を変更または削除するには、更新する認証局の行でアクションメニューアクション・アイコンをクリックします。

API を使用したルート認証局の作成

Secrets Manager API を呼び出すことで、サービス・インスタンスの内部署名付きルート認証局を作成できます。

以下の例は、ルート認証局を作成するために使用できる照会を示しています。

curl -X POST
  --H "Authorization: Bearer {iam_token}" \
  --H "Accept: application/json" \
  --H "Content-Type: application/json" \
  --d '{
  "config_type": "private_cert_configuration_root_ca",
  "name": "test-root-CA",
  "common_name": "example.com",
  "crl_disable": false,
  "crl_distribution_points_encoded": true,
  "issuing_certificates_urls_encoded": true,
  "max_ttl": "43830h"
}' \  
  "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations"

ご自身のHSMを持参される場合は、リクエストに以下を含めてください:

"crypto_key": {
    "label": "my_key",
    "allow_generate_key": true,
    "provider": {
      "type": "hyper_protect_crypto_services",
      "instance_crn": "replace_with_hpcs_crn::",
      "pin_iam_credentials_secret_id": "replace_with_iam_credentials_secret_guid",
      "private_keystore_id": "replace_with_keystore_id"
    }
  }

正常な応答によって、構成がサービス・インスタンスに追加されます。

{
  "common_name": "example.com",
  "config_type": "private_cert_configuration_root_ca",
  "created_at": "2022-06-27T11:58:15Z",
  "created_by": "iam-ServiceId-e4a2f0a4-3c76-4bef-b1f2-fbeae11c0f21",
  "crl_disable": false,
  "crl_distribution_points_encoded": true,
  "data": {
    "certificate": "-----BEGIN CERTIFICATE-----\nMIIGRjCCBS6gAwIBAgIUSKW6zI+E9JU4bva\n-----END CERTIFICATE-----",
    "expiration": 1825612535,
    "issuing_ca": "-----BEGIN CERTIFICATE-----\nMIIGRjCCBS6gAwIBAgIUSKW6zI+E9JU4bvad\n-----END CERTIFICATE-----",
    "serial_number": "48:a5:ba:cc:8f:84:f4:95:38:6e:f6:9d:9e:d7:8f:d8:43:d3:55:bd"
  },
  "exclude_cn_from_sans": false,
  "format": "pem",
  "issuing_certificates_urls_encoded": true,
  "max_path_length": -1,
  "max_ttl_seconds": 31536000,
  "name": "test-root-CA",
  "private_key_format": "der",
  "secret_type": "private_cert",
  "updated_at": "2022-10-05T21:33:11Z"
}

必須およびオプションのリクエストパラメータの詳細については、 設定の追加を参照してください。

CLIからのルート認証局の作成

ibmcloud secrets-manager configuration-create コマンドを使用して、サービス・インスタンスの内部署名ルート認証局を作成できます。

次の例は、ルート認証局を作成するために使用できるコマンドを示しています。

ibmcloud secrets-manager configuration-create
  --configuration-prototype='{
    "config_type": "private_cert_configuration_root_ca",
    "name": "example-root-CA",
    "max_ttl": "43830h",
    "crl_expiry": "72h",
    "crl_disable": false,
    "crl_distribution_points_encoded": true,
    "issuing_certificates_urls_encoded": true,
    "common_name": "example.com",
    "alt_names": [
      "alt-name-1","alt-name-2"
      ],
    "ip_sans": "127.0.0.1",
    "uri_sans": "https://www.example.com/test",
    "other_sans": ["1.2.3.5.4.3.201.10.4.3;utf8:test@example.com"],
    "ttl": "2190h",
    "format": "pem",
    "private_key_format": "der",
    "key_type": "rsa",
    "key_bits": 4096,
    "max_path_length": -1,
    "exclude_cn_from_sans": false,
    "permitted_dns_domains": ["exampleString"],
    "ou": ["exampleString"],
    "organization": ["exampleString"],
    "country": ["exampleString"],
    "locality": ["exampleString"],
    "province": ["exampleString"],
    "street_address": ["exampleString"],
    "postal_code": ["exampleString"],
    "serial_number": "d9:be:fe:35:ba:09:42:b5:35:ba:09:42:b5"
  }'

自前のHSMを持ち込む場合は、コマンドに以下を含める:

"crypto_key": {
    "label": "my_key",
    "allow_generate_key": true,
    "provider": {
      "type": "hyper_protect_crypto_services",
      "instance_crn": "replace_with_hpcs_crn::",
      "pin_iam_credentials_secret_id": "replace_with_iam_credentials_secret_guid",
      "private_keystore_id": "replace_with_keystore_id"
    }
  }

Terraformでルート認証局を作成する

Secrets Managerの Terraform を使用して、サービス・インスタンスの内部署名ルート認証局を作成できます。

次の例は、ルート認証局を作成するために使用できる設定を示している。

    resource "ibm_sm_private_certificate_configuration_root_ca" "test_root_ca" {
        instance_id = local.instance_id
        region = local.region
        name = "test-root-ca"
        common_name = "root.example.com"
        max_ttl = "3650d"
        issuing_certificates_urls_encoded = true
    }

自前のHSMを持ち込む場合は、コンフィギュレーションに以下を含めてください:

crypto_key {
    label = "my_key"
    allow_generate_key = true
    provider {
      type = "hyper_protect_crypto_services"
      instance_crn = "replace_with_hpcs_crn::"
      pin_iam_credentials_secret_id = "replace_with_iam_credentials_secret_guid"
      private_keystore_id = "replace_with_keystore_id"
    }
}

UIでのルート証明機関の取得

Secrets Manager UI を使用して、ルート認証局の値を取得できます。

  1. 「公開証明書」 シークレット・エンジンで、 「アクション」 メニュー 「アクション」アイコン をクリックして、エンジン構成のオプションのリストを開きます。
  2. 設定値を表示するには、 View configurationをクリックします。
  3. 安全な環境にいることを確認したら、 「確認」 をクリックします。

シークレットの値が 15 秒間表示された後、ダイアログが閉じます。

CLI を使用したルート認証局の取得

Secrets Manager CLI を使用して、ルート認証局の値を取得できます。 以下のコマンド例では、エンジン構成名をご使用の構成の名前に置き換えます。

ibmcloud secrets-manager configuration --name EXAMPLE_CONFIG --service-url https://{instance_ID}.{region}.secrets-manager.appdomain.cloud

{instance_ID}{region} を、ご使用の Secrets Manager サービス・インスタンスに適用される値に置き換えます。 インスタンス固有のエンドポイント URL を見つけるには、Secrets Manager UI の 「エンドポイント」 ページからエンドポイント URL をコピーします。 詳細については、エンドポイント URL の表示を参照してください。

API を使用したルート認証局の取得

Secrets Manager API を使用して、ルート認証局の値を取得できます。 以下の要求例では、エンジン構成名をご使用の構成の名前に置き換えてください。

curl -X GET --location --header "Authorization: Bearer {iam_token}" \
--header "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations/{name}"

{instance_ID}{region} を、ご使用の Secrets Manager サービス・インスタンスに適用される値に置き換えます。 インスタンス固有のエンドポイント URL を見つけるには、Secrets Manager UI の 「エンドポイント」 ページからエンドポイント URL をコピーします。 詳細については、エンドポイント URL の表示を参照してください。

レスポンスに成功すると、他のメタデータとともにエンジン・コンフィギュレーションの値が返される。 必須およびオプションのリクエスト・パラメータの詳細については、 秘密の取得 を参照のこと。

次のステップ