一方向 HTTPS 認証ではサーバーのみを検証しますが、HTTPS 相互認証ではサーバーとクライアントの両方を検証します。相互認証は、重要なサービスのセキュリティを向上させます。このトピックでは、Classic Load Balancer (CLB) インスタンスの HTTPS リスナーで相互認証を設定する方法について説明します。
設定手順
このガイドでは、自己署名認証局 (CA) 証明書を使用してクライアント証明書に署名します。HTTPS リスナーで相互認証を設定するには、次の手順を実行します。

前提条件
Classic Load Balancer (CLB) インスタンスを作成済みであること。
2 つのバックエンドサーバー ECS01 と ECS02 を作成し、各サーバーに異なるアプリケーションをデプロイ済みであること。
ステップ 1:サーバー証明書の購入
サーバー証明書は、Alibaba Cloud の Certificate Management Service コンソールまたは他のサービスプロバイダーから購入できます。ブラウザは、サーバーから送信された証明書が信頼できる認証局 (CA) によって発行されたものであるかどうかを確認します。
このトピックでは、Alibaba Cloud の Certificate Management Service コンソールから購入したサーバー証明書を例として使用します。詳細については、「商用証明書の購入」をご参照ください。
SSL 証明書を購入する際には、ドメイン名をバインドする必要があります。有効でアクティブなドメイン名があることを確認してください。
ステップ 2:OpenSSL を使用した CA 証明書の生成
OpenSSL がインストールされている Linux マシンにログインします。
次のコマンドを実行して、ルート CA 証明書の秘密鍵を作成します。
openssl genrsa -out root.key 4096次のコマンドを実行して、ルート CA の証明書署名要求 (CSR) ファイルを作成します。
openssl req -new -out root.csr -key root.keyプロンプトが表示されたら、次のパラメーターの値を入力します。次のコードは一例です。
説明CA 証明書のコモンネームは一意である必要があります。サーバー証明書またはクライアント証明書のコモンネームと同じにすることはできません。
Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:bj Locality Name (eg, city) [Default City]:bj Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your servers hostname) []:root Email Address []:a.alibaba.com A challenge password []: An optional company name []:次のコマンドを実行して、ルート CA 証明書を作成します。
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650次の図は結果を示しています。

lsコマンドを実行して、生成されたルート CA 証明書ファイルroot.crtと秘密鍵ファイルroot.keyを表示します。
ステップ 3:クライアント証明書の生成
次のコマンドを実行して、クライアント証明書の秘密鍵を生成します。
次のコマンドを実行して、クライアント証明書の CSR ファイルを生成します。コモンネームにご利用のドメイン名を設定します。
次のコマンドを実行して、クライアント証明書を生成します。
次のコマンドを実行して、生成された
client.crt証明書をブラウザと互換性のある PKCS12 ファイルに変換します。プロンプトが表示されたら、クライアントの秘密鍵を暗号化するためのパスワードを入力します。lsコマンドを実行し、生成されたクライアント証明書ファイルclient.key、client.crt、およびclient.p12を表示します。
openssl genrsa -out client.key 4096openssl req -new -out client.csr -key client.keyopenssl x509 -req -in client.csr -out client.crt -CA root.crt -CAkey root.key -CAcreateserial -days 3650openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12ステップ 4:クライアント証明書のインストール
生成されたクライアント証明書をクライアントにインストールします。
Windows クライアント
client.p12 証明書ファイルをダブルクリックし、証明書のインポートウィザードに従ってインストールを完了します。
Linux クライアント
事前に生成された client.key、client.crt、および root.crt 証明書ファイルを Linux クライアント上の任意のディレクトリにアップロードします。
このトピックでは、/home/ca ディレクトリを例として使用します。sudo chmod 700 /home/ca コマンドを実行して、ディレクトリの権限を変更します。
ステップ 5:サーバー証明書と CA 証明書のアップロード
Classic Load Balancer (CLB) コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。次に、[証明書の作成] をクリックして、サーバー証明書をアップロードします。
[証明書の作成] パネルで [サードパーティ証明書のアップロード] をクリックし、次の構成を完了してから [作成] をクリックします。
構成
説明
[証明書名]
証明書の名前を入力します。
証明書タイプ
このトピックでは、[サーバー証明書] を選択します。
[公開鍵証明書]
サーバー証明書をコピーします。
秘密鍵
サーバー証明書の秘密鍵をコピーします。
証明書デプロイリージョン
CLB インスタンスがデプロイされているリージョンを選択します。
[証明書管理] ページで、[証明書の作成] をクリックして CA 証明書をアップロードします。
[証明書の作成] パネルで、[サードパーティ証明書のアップロード] をクリックし、次の構成を完了してから [作成] をクリックします。
構成
説明
[証明書名]
証明書の名前を入力します。
証明書タイプ
このトピックでは、[CA 証明書] を選択します。
クライアント CA 公開鍵証明書
クライアント CA の公開鍵証明書をアップロードします。
証明書デプロイリージョン
CLB インスタンスがデプロイされているリージョンを選択します。
ステップ 6:相互認証を使用する HTTPS リスナーの設定
Classic Load Balancer (CLB) コンソールにログインします。
作成した CLB インスタンスの ID をクリックします。
[リスナー] タブで、[リスナーの追加] をクリックします。
[プロトコルとリスナー] タブで、次の構成を完了し、[次へ] をクリックします。
リスナープロトコルの選択:HTTPS
リスナーポート:443
[SSL 証明書] タブで、アップロードしたサーバー証明書を選択します。
[高度な設定] の横にある [編集] をクリックし、相互認証を有効にして、アップロードした CA 証明書を選択してから、[次へ] をクリックします。
[デフォルトサーバーグループ] を選択し、[追加] をクリックして、バックエンドサーバーを追加します。
他のパラメーターはデフォルト値のままにします。[次へ] をクリックして続行します。最後のステップで [送信] をクリックして、リスナーの設定を完了します。
ステップ 7:HTTPS 相互認証のテスト
Windows クライアント
ブラウザで
https://ip:portを入力します。ip は CLB インスタンスのパブリックエンドポイントです。表示されるダイアログボックスで、指示に従ってクライアント証明書を選択して確定します。ブラウザを更新します。リクエストが 2 つの ECS インスタンス間で分散されていることを確認できます。


Linux クライアント
証明書がインストールされている Linux クライアントにログインします。次のコマンドを実行して、CLB の相互認証を検証します。
sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/ca.crt https://<サーバー証明書にバインドされたドメイン名>:<ポート>次の図のような応答メッセージは、クライアントとサーバーが相互認証を完了し、リクエストが 2 つの ECS インスタンス間で分散されていることを示します。