相互認証は、ビジネスクリティカルなサービスのセキュリティを向上させます。 このトピックでは、Application Load Balancer (ALB) インスタンスのHTTPSリスナーで相互認証を設定する方法について説明します。
背景情報
一方向認証: クライアントはサーバーのIDを検証する必要があります。 サーバは、クライアントのアイデンティティを検証する必要はない。 クライアントは、認証のために公開鍵証明書をサーバからダウンロードする。 接続は、サーバのアイデンティティが認証された後に確立することができる。
相互認証: クライアントはサーバーからサーバー証明書 (公開鍵証明書) をダウンロードし、認証のためにクライアント証明書 (公開鍵証明書) をサーバーにアップロードします。 接続は、クライアントとサーバーの両方が認証された後にのみ確立できます。 相互認証は、より高いセキュリティを提供する。
制限事項
標準およびWAF対応のALBインスタンスのみが相互認証をサポートしています。 Basic ALBインスタンスは相互認証をサポートしていません。
前提条件
標準またはWAF対応のALBインスタンスが作成されています。 詳細については、「ALBインスタンスの作成」をご参照ください。
説明Basic ALBインスタンスは相互認証をサポートしていません。
仮想プライベートクラウド (VPC) が作成されます。 この例ではVPC1が使用されます。 詳細については、「VPC の作成と管理」をご参照ください。
ECS01とECS02という名前の2つのElastic Compute Service (ECS) インスタンスがVPC1に作成されます。 ECS01とECS02はALBインスタンスのバックエンドサーバーとして機能し、アプリケーションはECS01とECS02にデプロイされます。
ECSインスタンスの作成方法の詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
次のコードブロックは、ECS01およびECS02にアプリケーションをデプロイする方法を示しています。
サーバグループが作成され, ECS01とECS02がサーバグループに追加されます。 詳細については、「サーバーグループの作成と管理」をご参照ください。
サーバー証明書は、証明書管理サービスコンソールで購入またはアップロードされます。 詳細については、「SSL証明書の購入」および「SSL証明書のアップロード」をご参照ください。
certificate Management Serviceコンソールで中間CA証明書を購入し、少なくとも1つのプライベート中間CA証明書を使用できます。 詳細については、「プライベートCAの購入と有効化」をご参照ください。
手順
サーバー側では、サーバー証明書を購入する必要があります。 クライアント側またはユーザー側では、クライアント証明書を取得、エクスポート、およびインストールする必要があります。
ステップ1: サーバー証明書の準備
証明書管理サービスコンソールでサーバー証明書を購入またはアップロードするか、サードパーティのサーバー証明書をアップロードできます。 ブラウザは、サーバによって送信された証明書が信頼できる認証局 (CA) によって発行されたものであるかどうかをチェックすることによって、サーバのアイデンティティを検証する。
この例では、サーバー証明書は証明書管理サービスコンソールから購入されます。 サーバー証明書の購入方法の詳細については、「SSL証明書の購入」および「SSL証明書のアップロード」をご参照ください。
証明書に関連付ける有効なドメイン名があることを確認してください。
ステップ2: クライアント証明書の準備
Certificate Management Serviceコンソールにログインします。
左側のナビゲーションウィンドウで、[プライベート証明書] をクリックします。
[プライベート証明書] ページで、[プライベートCA] タブをクリックし、ルートCA証明書を見つけます。
アイコンをクリックし、アクション列で証明書の申請をクリックします。
証明書の申請パネルで、パラメータを設定し、確認をクリックします。
次の表に、このトピックに関連するパラメーターのみを示します。 詳細については、「プライベート証明書の管理」をご参照ください。
パラメーター
説明
証明書のタイプ
取得するプライベート証明書の種類を選択します。 この例では、クライアント証明書が選択されています。
共通名
プライベート証明書の共通名を指定します。
この例では、ALBインスタンスのドメイン名が指定されています。
購入期間
プライベート証明書の有効期間を指定します。 プライベート証明書の有効期間は、購入したPCA (private certificate Authority) サービスのサブスクリプション期間を超えることはできません。
この例では、デフォルトの有効期間 (30日) が使用されます。
プライベート証明書は、リクエストが送信された直後に発行されます。 発行されたプライベート証明書の詳細を表示するには、プライベート証明書を見つけて、[操作] 列の [証明書] をクリックします。 証明書に関する情報は、[証明書] ページで確認できます。
ステップ3: クライアント証明書のエクスポート
コンソールでクライアント証明書を購入し、相互認証にクライアント証明書を使用する場合は、次の操作を実行してクライアント証明書をエクスポートします。
Certificate Management Serviceコンソールにログインします。
左側のナビゲーションウィンドウで、[プライベート証明書] をクリックします。
[プライベート証明書] ページで、[プライベートCA] タブをクリックし、ルートCA証明書を見つけます。
ルートCA証明書を見つけて、アイコンをクリックします。 次に、中間CA証明書を見つけ、[操作] 列の 証明書リスト をクリックします。
証明書リスト ページで、管理するクライアント証明書を見つけ、[操作] 列の [ダウンロード] をクリックします。 証明書形式として、ブラウザで認識可能なPFX形式を選択します。 証明書ファイルには、
. pfx
クライアント証明書ファイルと. txt
クライアント秘密鍵の暗号化に使用されるパスワードファイル。
手順4: クライアント証明書のインストール
インストールガイドに基づいて、クライアント証明書をクライアントにインストールします。
この例では、Windowsオペレーティングシステムが使用されています。
手順5: HTTPSリスナーでの相互認証の設定
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
インスタンスページでALB管理するインスタンスのIDをクリックします。
リスナータブで、作成リスナーをクリックし、パラメーターを設定し、次へをクリックします。
次の表に、いくつかのパラメーターを示します。 他のパラメーターにはデフォルト値を使用します。
パラメーター
手順
リスナープロトコルの選択
リスナープロトコルを選択します。
この例では、HTTPSが選択されています。
リスナーポート
ALBインスタンスがリッスンするポートを入力します。 ALBインスタンスはポートをリッスンし、リクエストをバックエンドサーバーに転送します。 この例では、ポート443が使用される。
SSL 証明書の設定ステップで、ステップ1で購入したサーバー証明書を選択します。
[変更] をクリックして詳細設定を表示し、[詳細設定] セクションで [相互認証の有効化] をオンにします。 CA証明書のソースとしてAlibaba Cloudを選択します。 [既定のCA証明書] ドロップダウンリストから、[ステップ2: クライアント証明書の取得] で購入したCA証明書を選択します。
TLSセキュリティポリシーを選択し、[次へ] をクリックします。
サーバーグループ ステップで、サーバータイプ パラメーターを設定し、サーバータイプ パラメーターに基づいてサーバーグループを選択します。 ECSインスタンス (ECS01およびECS02) を確認し、[次へ] をクリックします。
確定ステップで、設定を確認し、送信をクリックします。
ステップ6: ドメイン名解決の設定
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
のドメイン名をコピーします。ALBインスタンスを作成します。
CNAMEレコードを作成するには、次の手順を実行します。
Alibaba Cloud DNSコンソールにログインします。
DNSの管理ページで、ドメイン名の追加をクリックします。
ドメイン名の追加ダイアログボックスでドメイン名を入力し、OKをクリックします。
重要サーバー証明書に関連付けられているドメイン名を入力します。
CNAMEレコードを作成する前に、TXTレコードを使用してドメイン名の所有権を確認する必要があります。
管理するドメイン名を見つけて、アクション列でDNS設定をクリックします。
DNS設定ページで、レコードの追加をクリックします。
DNSレコードの追加パネルで、次のパラメータを設定し、OKをクリックします。
パラメーター
説明
レコードタイプ
ドロップダウンリストから [CNAME] を選択します。
ホスト名
ドメイン名のプレフィックスを入力します。
DNSリクエストソース
[デフォルト] を選択します。
レコード値
ALBインスタンスのドメイン名であるCNAMEを入力します。
TTL
DNSサーバーにキャッシュされるCNAMEレコードの有効期限 (TTL) 値を選択します。 この例では、デフォルト値が使用されます。
説明CNAMEレコードを作成すると、すぐに有効になります。 レコードを変更すると、レコードはレコードのTTLに基づいて有効になります。 デフォルトでは、TTLは10分です。
作成するCNAMEレコードが既存のレコードと競合する場合は、別のドメイン名を指定することを推奨します。 詳細については、「競合するDNSレコードのルール」をご参照ください。
ステップ7: 相互認証が期待どおりに機能するかどうかをテストする
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
[インスタンス] ページで、ALBインスタンスのIDをクリックします。 次に、[リスナー] タブをクリックして、HTTPSリスナーのヘルスチェックステータスを表示します。
[ヘルスチェックステータス] 列に [Healthy] が表示されている場合、バックエンドサーバーがALBインスタンスによって転送されたリクエストを処理できることを示します。
ブラウザから
https:// domain:port
にアクセスします。 表示されるダイアログボックスで、クライアント証明書を選択し、[OK] をクリックします。ページを更新すると、次の図に示すように、リクエストはECS01とECS02の間で分散されます。