相互 TLS の使用
相互 Transport Layer Security (mTLS) 認証により、トラフィックはクライアントとサーバー間の双方向でセキュアかつ信頼できるものになります。 エンタープライズまたはセキュリティー・プラン・レベルの顧客のみが利用できます。
mTLS が構成されている場合、アクセスは、対応するクライアント証明書を持つ要求にのみ付与されます。 要求がアプリケーションに到達すると、CIS はクライアント証明書の要求で応答します。 クライアントが証明書を提示できない場合、要求は続行できません。 その他の場合、鍵交換が続行されます。

相互 TLS の構成
相互 TLS はデフォルトでは有効になっていません。 これは、事前の許可と有効化が必要な追加サービスです。
許可を取得するには、IBM サポート Case をサブミットする必要があります。
アカウントで mTLS をオンにしたら、次の手順を実行して mTLS を有効にします。
- CIS UI で**「セキュリティー」**ページに移動します。
- **「相互 TLS」**タブを選択します。
- 「有効化」 をクリックして、機能を有効化します。
mTLS を有効にした後は、無効にすることはできません。
特定のエンドポイントの IBM Cloud Internet Services UI で mTLS 認証をセットアップするには、以下の手順に従います。
-
ルート証明書表で、**「追加」**をクリックして新しいルート証明書を定義します。
-
証明書のコンテンツをコンテンツ・フィールドに貼り付け、ルート CA の名前を入力し、この証明書を使用するエンドポイントの 1 つ以上の完全修飾ドメイン名 (FQDN) を追加します。 これらの FQDN は、アプリケーション・ポリシーによって保護されているリソースに使用されるホスト名です。 ルート CA は、保護されているアプリケーションが使用する FQDN に関連付ける必要があります。
-
保存 をクリックします。
ご使用のゾーンでルート証明書に加えて中間証明書を使用している場合は、チェーン全体をアップロードします。
-
MTLS アクセス・ポリシー表で、mTLS 認証を施行する新しいアクセス・アプリケーションを作成します。 アプリケーションは、証明書アップロード・モーダルで関連付けられたホスト名でビルドする必要があります。 ポリシー・セクションは、
non_identity
の決定と、有効な証明書と一致するinclude
ルールを適用するように事前設定されています。
curl を使用したテスト
-
クライアント証明書なしでサイトの curl を試行することにより、mTLS を使用してサイトをテストします。 以下の curl コマンド例は、
https://auth.example.com
のアクセス・ポリシー・セットを含むサイト example.com を対象にしています。curl -sv https://auth.example.com
リクエストにクライアント証明書がない場合、「403 Forbidden」という応答が表示され、サイトにアクセスできません。
-
要求にクライアント証明書情報を次のように追加します。
curl -sv https://auth.example.com --cert example.pem --key key.pem
認証プロセスが正常に完了すると、CF_Authorization Set-Cookie ヘッダーが応答で返されます。
相互 TLS の検証
このアクセス・ポリシーを有効にする場合は、次の検証ワークフローに従います。
- 起点へのすべての要求は、有効なクライアント証明書について評価されます。 クライアント・デバイスは、クライアントに「hello」と送信します。 アクセス・アプリケーションは、クライアント証明書の要求とともに「hello」と応答します。
- クライアントは有効な証明書を返します。
- ルート認証局に対するクライアント認証ハンドシェークが完了します。
- チェーンの場合、有効期限切れの証明書がないかどうかチェックが行われます。 チェーンの検証は、証明書の検証に適用できます。
- クライアント証明書がルート証明書によって信頼されている場合、署名された JSON Web Token (JWT) がクライアントに対して生成され、要求と後続の要求の処理が許可されます。 要求に有効なクライアント証明書がない場合、
403 Forbidden
が応答で返されます。