片方向認証では、クライアントのみがサーバーの ID を検証するため、金融取引、医療、銀行、オンライン決済のシナリオにおけるセキュリティ要件を満たすことができません。サーバーは接続してくるすべてのクライアントを信頼するため、中間者攻撃や不正アクセスのリスクが発生します。Application Load Balancer (ALB) は、HTTPS リスナーで相互認証を有効にします。相互認証では、クライアントとサーバーの両方で、データ転送のための安全な接続を確立する前に、互いの ID を検証する必要があります。ALB を使用してサービスを保護できます。
背景情報
片方向認証: クライアントはサーバーの ID を検証する必要があります。サーバーはクライアントの ID を検証する必要はありません。クライアントは認証のためにサーバーから公開鍵証明書をダウンロードします。サーバーの ID が認証された後、接続を確立できます。
相互認証: クライアントはサーバーからサーバー証明書(公開鍵証明書)をダウンロードし、認証のためにクライアント証明書(公開鍵証明書)をサーバーにアップロードします。 クライアントとサーバーの両方が認証された後にのみ、接続を確立できます。 相互認証は、より高いセキュリティを提供します。
前提条件
標準または WAF 対応 ALB インスタンスが作成されます。詳細については、「ALB インスタンスを作成する」をご参照ください。
説明Basic ALB インスタンスは相互認証をサポートしていません。
A virtual private cloud (VPC) が作成されます。この例では VPC1 を使用します。詳細については、「VPC を作成および管理する」をご参照ください。
2 つの Elastic Compute Service (ECS) インスタンス (ECS01 と ECS02) が VPC1 に作成されます。ECS01 と ECS02 は [ALB] インスタンスのバックエンドサーバーとして機能し、アプリケーションは ECS01 と ECS02 にデプロイされます。
詳細については、「ウィザードを使用してインスタンスを作成する」をご参照ください。
以下のコードブロックは、ECS01 と ECS02 にアプリケーションをデプロイする方法を示しています。
A server group is created and ECS01 and ECS02 are added to the server group. For more information, see Create and manage a server group. サーバーグループが作成され、ECS01 と ECS02 がサーバーグループに追加されます。詳細については、「サーバーグループを作成および管理する」をご参照ください。
サーバー証明書は、SSL Certificates Service コンソールで購入またはアップロードします。詳細については、「SSL 証明書を購入する」および「SSL 証明書をアップロードする」をご参照ください。
中間 CA 証明書は SSL Certificates Service コンソールで購入され、少なくとも 1 つの非公開中間 CA 証明書が利用可能です。詳細については、「非公開 CA の購入と有効化」をご参照ください。
手順
サーバー側では、サーバー証明書を購入する必要があります。クライアント側またはユーザー側では、クライアント証明書を取得、エクスポート、およびインストールする必要があります。
ステップ 1: サーバー証明書を準備する
SSL Certificates Service コンソールでサーバー証明書を購入またはアップロードするか、サードパーティのサーバー証明書をアップロードできます。ブラウザは、サーバーから送信された証明書が信頼できる認証局(CA)によって発行されたかどうかを確認することで、サーバーの ID を検証します。
この例では、証明書管理サービス コンソールからサーバー証明書を購入します。サーバー証明書の購入方法の詳細については、「SSL 証明書の購入」および「SSL 証明書のアップロード」をご参照ください。
有効なドメイン名と証明書を関連付けていることを確認します。
ステップ 2: クライアント証明書を準備する
SSL Certificates Service コンソール にログオンします。
左側のナビゲーション ウィンドウで、[プライベート証明書] をクリックします。
[プライベート証明書] ページで、[プライベート CA] タブをクリックし、ルート CA 証明書を探します。
アイコンをクリックし、[証明書の申請][アクション] 列の をクリックします。
[証明書の申請] パネルで、パラメーターを構成し、[確認] をクリックします。
次の表は、このトピックに関連するパラメーターのみを示しています。詳細については、「プライベート証明書の管理」をご参照ください。
パラメーター
説明
証明書のタイプ
プライベート証明書のタイプを選択します。この例では、[クライアント証明書] が選択されています。
共通名
プライベート証明書の共通名を指定します。
この例では、[ALB] インスタンスのドメイン名が指定されています。
有効期間
プライベート証明書の有効期間を指定します。 プライベート証明書の有効期間は、購入したプライベート認証局 (PCA) サービスのサブスクリプション期間を超えることはできません。
この例では、デフォルトの有効期間である 30 日が使用されます。
プライベート証明書は、リクエストが送信されるとすぐに発行されます。発行されたプライベート証明書の詳細を表示するには、プライベート証明書を見つけて、[証明書] を [アクション] 列でクリックします。[証明書] ページで証明書に関する情報を表示できます。
Step 3: クライアント証明書をエクスポートする
コンソールでクライアント証明書を購入し、相互認証にクライアント証明書を使用する場合は、次の操作を実行してクライアント証明書をエクスポートします。
SSL Certificates Service コンソール にログオンします。
左側のナビゲーションウィンドウで、[プライベート証明書] をクリックします。
[プライベート証明書] ページで、[プライベート CA] タブをクリックし、ルート CA 証明書を探します。
ルート CA 証明書を見つけて、
アイコンをクリックします。次に、中間 CA 証明書を見つけて、証明書リスト[アクション] 列の をクリックします。
証明書リスト ページで、管理するクライアント証明書を探し、ダウンロード[アクション] 列の
.pfx
This document describes how to use the Azure portal to create a private DNS zone and record set. You can then use the private zone and record set to resolve domain names for virtual machines (VMs) in a virtual network. このドキュメントでは、[Azure portal] を使用してプライベート DNS ゾーンとレコード セットを作成する方法について説明します。その後、プライベート ゾーンとレコード セットを使用して、仮想ネットワーク内の仮想マシン (VM) のドメイン名を解決できます。
をクリックします。証明書のフォーマットとして、ブラウザで認識できる PFX フォーマットを選択します。証明書ファイルには、 クライアント証明書ファイルと、クライアント秘密鍵の暗号化に使用される パスワードファイルが含まれています。
ステップ 4:クライアント証明書をインストールする
クライアントにインストールガイドに基づいてクライアント証明書をインストールします。
In this example, the Windows オペレーティングシステム is used.
ステップ 5: HTTPS リスナーで相互認証を構成する
[ALB コンソール] にログオンします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理する ALB インスタンスの ID をクリックします。
[リスナー] タブで、[リスナーの作成] をクリックし、パラメーターを構成してから、[次へ] をクリックします。
次の表に、いくつかのパラメーターについて説明します。その他のパラメーターにはデフォルト値を使用してください。
パラメーター
手順
リスナープロトコルの選択
リスナー プロトコルを選択します。
この例では、[HTTPS] が選択されています。
リスナーポート
ALB インスタンスが listen するポートを入力します。ALB インスタンスはポートで listen し、リクエストをバックエンドサーバーに転送します。この例では、ポート 443 を使用します。
SSL 証明書の設定 ステップで、ステップ 1で購入したサーバー証明書を選択します。
[変更] をクリックして詳細設定を表示し、[相互認証を有効にする][詳細設定] セクションで CA 証明書のソースとして [Alibaba Cloud] を選択します。手順 2: クライアント証明書を取得する で購入した CA 証明書を [デフォルトの CA 証明書] ドロップダウンリストから選択します。
TLS セキュリティポリシーを選択し、[次へ] をクリックします。
サーバーグループ ステップで、サーバータイプ パラメーターを構成し、サーバータイプ パラメーターに基づいてサーバーグループを選択します。 ECS インスタンス (ECS01 と ECS02) を確認し、[次へ] をクリックします。
確定 ステップで、構成を確認し、[送信] をクリックします。
ステップ 6: ドメイン名解決を設定する
[ALB コンソール] にログオンします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
ALB インスタンスのドメイン名をコピーします。
CNAME レコードを作成するには、次の手順を実行します。
Alibaba Cloud DNS コンソール にログオンします。
[DNS の管理] ページで、[ドメイン名の追加] をクリックします。
[ドメイン名を追加] ダイアログボックスで、ドメイン名を入力し、[OK] をクリックします。
重要サーバー証明書に関連付けられているドメイン名を入力します。
CNAME レコードを作成する前に、TXT レコードを使用してドメイン名の所有権を確認する必要があります。
[DNS 設定] ページで、[レコードの追加] をクリックします。
[DNS レコードの追加] パネルで、次のパラメーターを構成し、[OK] をクリックします。
パラメーター
説明
レコードタイプ
[CNAME] をドロップダウンリストから選択します。
ホスト名
ドメイン名のプレフィックスを入力します。
DNS リクエストソース
デフォルトを選択します。
レコード値
ALB インスタンスのドメイン名である CNAME ドメイン名を入力します。
TTL
Select a time-to-live (TTL) value for the CNAME record to be cached on the DNS server. The default value is used in this example. DNS サーバにキャッシュされる CNAME レコードの生存時間 (TTL) 値を選択します。この例ではデフォルト値が使用されています。
説明CNAME レコードを作成すると、すぐに有効になります。レコードを変更すると、レコードの TTL に基づいてレコードが有効になります。デフォルトでは、TTL は 10 分です。
作成しようとしている CNAME レコードが既存のレコードと競合する場合は、別のドメイン名を指定することをお勧めします。詳細については、「競合する DNS レコードのルール」をご参照ください。
ステップ 7:相互認証が想定どおりに機能するかどうかをテストする
[ALB コンソール] にログオンします。
上部のナビゲーションバーで、ALB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、ALB インスタンスの ID をクリックします。次に、[リスナー] タブをクリックして、HTTPS リスナーのヘルスチェックステータスを表示します。
[正常] が [ヘルスチェックステータス] 列に表示されている場合は、バックエンドサーバーが ALB インスタンスによって転送されたリクエストを処理できることを示します。
https://domain:port
にブラウザからアクセスします。表示されるダイアログボックスで、クライアント証明書を選択し、[OK] をクリックします。ページをリフレッシュすると、次の図に示すように、リクエストは ECS01 と ECS02 の間で分散されます。