IBM Cloud Docs
相互 TLS の使用

相互 TLS の使用

相互 Transport Layer Security (mTLS) 認証により、トラフィックはクライアントとサーバー間の双方向でセキュアかつ信頼できるものになります。 エンタープライズまたはセキュリティー・プラン・レベルの顧客のみが利用できます。

mTLS が構成されている場合、アクセスは、対応するクライアント証明書を持つ要求にのみ付与されます。 要求がアプリケーションに到達すると、CIS はクライアント証明書の要求で応答します。 クライアントが証明書を提示できない場合、要求は続行できません。 その他の場合、鍵交換が続行されます。

*の図mTLS握手
の図

相互 TLS の構成

相互 TLS はデフォルトでは有効になっていません。 これは、事前の許可と有効化が必要な追加サービスです。

許可を取得するには、IBM サポート Case をサブミットする必要があります。

アカウントで mTLS をオンにしたら、次の手順を実行して mTLS を有効にします。

  1. CIS UI で**「セキュリティー」**ページに移動します。
  2. **「相互 TLS」**タブを選択します。
  3. 「有効化」 をクリックして、機能を有効化します。

mTLS を有効にした後は、無効にすることはできません。

特定のエンドポイントの IBM Cloud Internet Services UI で mTLS 認証をセットアップするには、以下の手順に従います。

  1. ルート証明書表で、**「追加」**をクリックして新しいルート証明書を定義します。

  2. 証明書のコンテンツをコンテンツ・フィールドに貼り付け、ルート CA の名前を入力し、この証明書を使用するエンドポイントの 1 つ以上の完全修飾ドメイン名 (FQDN) を追加します。 これらの FQDN は、アプリケーション・ポリシーによって保護されているリソースに使用されるホスト名です。 ルート CA は、保護されているアプリケーションが使用する FQDN に関連付ける必要があります。

  3. 保存 をクリックします。

    ご使用のゾーンでルート証明書に加えて中間証明書を使用している場合は、チェーン全体をアップロードします。

  4. MTLS アクセス・ポリシー表で、mTLS 認証を施行する新しいアクセス・アプリケーションを作成します。 アプリケーションは、証明書アップロード・モーダルで関連付けられたホスト名でビルドする必要があります。 ポリシー・セクションは、non_identity の決定と、有効な証明書と一致する include ルールを適用するように事前設定されています。

curl を使用したテスト

  1. クライアント証明書なしでサイトの curl を試行することにより、mTLS を使用してサイトをテストします。 以下の curl コマンド例は、https://auth.example.com のアクセス・ポリシー・セットを含むサイト example.com を対象にしています。

    curl -sv https://auth.example.com
    

    リクエストにクライアント証明書がない場合、「403 Forbidden」という応答が表示され、サイトにアクセスできません。

  2. 要求にクライアント証明書情報を次のように追加します。

    curl -sv https://auth.example.com --cert example.pem --key key.pem
    

    認証プロセスが正常に完了すると、CF_Authorization Set-Cookie ヘッダーが応答で返されます。

相互 TLS の検証

このアクセス・ポリシーを有効にする場合は、次の検証ワークフローに従います。

  1. 起点へのすべての要求は、有効なクライアント証明書について評価されます。 クライアント・デバイスは、クライアントに「hello」と送信します。 アクセス・アプリケーションは、クライアント証明書の要求とともに「hello」と応答します。
  2. クライアントは有効な証明書を返します。
  3. ルート認証局に対するクライアント認証ハンドシェークが完了します。
  4. チェーンの場合、有効期限切れの証明書がないかどうかチェックが行われます。 チェーンの検証は、証明書の検証に適用できます。
  5. クライアント証明書がルート証明書によって信頼されている場合、署名された JSON Web Token (JWT) がクライアントに対して生成され、要求と後続の要求の処理が許可されます。 要求に有効なクライアント証明書がない場合、 403 Forbidden が応答で返されます。