IBM Cloud Docs
SSL/TLS 秘密証明書の作成

SSL/TLS 秘密証明書の作成

IBM Cloud® Secrets Managerを使用すると、アプリやサービスで使用できるプライベートSSL/TLS証明書を保存、要求、生成できます。

SSL/TLS 証明書は、サーバーとクライアントの間の通信プライバシーを確立するために使用されるデジタル証明書の一種です。 証明書は 認証局(CAデジタル証明書を発行する、信頼できるサード・パーティーの組織または企業。 一般に、認証局は、固有の証明書を付与された個人の ID を検証します。)によって発行され、エンドポイント間の信頼できる安全な接続を作成するために使用される情報が含まれている。 Secrets Manager インスタンスに証明書を追加したら、その証明書を使用して、クラウドまたはオンプレミスのデプロイメントのネットワーク通信を保護できます。 証明書は、専用の Secrets Manager サービス・インスタンス内に安全に保管されます。このインスタンスでは、証明書のライフサイクルを一元管理できます。

Secrets Managerでは、プライベート認証局を使用して作成する証明書はプライベート証明書 (private_cert) です。 サービスにインポートする証明書は、 インポートされた証明書 (imported_cert) です。 サード・パーティーの認証局から Secrets Manager を介して注文する証明書は、 公開証明書 (public_cert) です。

開始前に

開始する前に、必要なレベルのアクセス権限を持っていることを確認してください。 シークレットを作成または追加するには、ライター・サービス・ロールまたはそれ以上が必要です。

プライベート証明書を作成する前に、以下を確認してください。

プライベート証明書を作成する際には、テンプレートの選択が必要である。 選択したテンプレートによっては、プライベート証明書にいくつかの制約事項が適用される場合があります。 中間 CA に定義されているテンプレートを表示するには、Secrets ManagerUI の Secrets engines > Private certificates ページに進みます。UI にアクセスします。 プ ラ イ ベー ト 証明書の発行局 と し て使用す る 中間 CA の行を展開 し 、 「Templates」 を ク リ ッ ク し て、 利用可能なテ ンプ レー ト を確認 し ます。

プライベート証明書の作成

インスタンスに対して プライベート証明書エンジンの構成 を実行した後、Secrets Manager を使用して、Secrets Manager サービス・インスタンス用に以前に構成された内部認証局を使用してプライベート証明書を生成できます。 証明書を発行する前に、Secrets Manager は、選択された証明書テンプレートに対して定義されている制限に証明書要求が一致していることを確認します。 証明書が発行された後、それを統合アプリケーションにデプロイしたり、ダウンロードしたり、取り消したり、手動でローテートしたりすることができます。

UI でのプライベート証明書の作成

Secrets Manager UI を使用してプライベート証明書を作成できます。

  1. コンソールで、**「メニュー」**アイコン「メニュー」アイコン **>「リソース・リスト」**をクリックします。
  2. サービスのリストから、Secrets Manager のインスタンスを選択します。
  3. **「シークレット」テーブルで、「追加」**をクリックします。
  4. プライベート証明書の作成タイルをクリックします。
  5. 次へ をクリックします。
  6. 証明書を簡単に識別するための名前と説明を追加します。
  7. オプション: インスタンス内の類似シークレットを検索しやすくするためのラベルを追加します。
  8. オプション: シークレットまたは特定のバージョンのシークレットにメタデータを追加します。
    1. ファイルをアップロードするか、メタデータとバージョン・メタデータを JSON 形式で入力します。
  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-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",
        }
    ]

このコマンドでは、シークレットの ID 値と他のメタデータが出力されます。 コマンド・オプションについては、ibmcloud secrets-manager secret-create を参照してください。

API を使用したプライベート証明書の作成

Secrets Manager API を呼び出すことによって、プライベート証明書をプログラマチックに生成できます。

以下の例は、プライベート証明書を作成するために使用できる照会を示しています。 API を呼び出す場合は、ID 変数と 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 リファレンスをチェックしてください。