すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:NLB を使用した TCP 経由の SSL オフロードの有効化 (相互認証)

最終更新日:Mar 26, 2026

Network Load Balancer (NLB) は、大規模な SSL オフロードをサポートしています。トラフィックのイングレスとして NLB インスタンスをデプロイし、SSL 証明書と認証局 (CA) 証明書を設定して相互認証を有効にすることができます。これにより、クライアントとサーバーの両方がデジタル証明書を提供して自身の ID を証明する必要があり、ワークロードのセキュリティが向上します。

背景情報

  • 一方向認証:クライアントはサーバーの ID を検証する必要があります。サーバーはクライアントの ID を検証する必要はありません。クライアントは認証のためにサーバーから公開鍵証明書をダウンロードします。接続は、サーバーの ID が検証された後にのみ確立できます。

  • 相互認証:クライアントはサーバーからサーバー証明書 (公開鍵証明書) をダウンロードし、認証のためにクライアント証明書 (公開鍵証明書) をサーバーにアップロードします。接続は、クライアントとサーバーの両方の ID が検証された後にのみ確立できます。相互認証は、より高いセキュリティを提供します。

前提条件

  • NLB インスタンスが作成されていること。詳細については、「NLB インスタンスの作成と管理」をご参照ください。

  • 3 つの Elastic Compute Service (ECS) インスタンスが作成されていること。インスタンスの作成方法については、「ウィザードを使用したインスタンスの作成」をご参照ください。

    • ECS01 と ECS02 は、バックエンドサーバーとして NLB インスタンスに追加されます。ECS01 と ECS02 には、異なる NGINX アプリケーションがデプロイされます。

      ECS01 へのアプリケーションのデプロイ

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! This is ECS01." > index.html
      

      ECS02 へのアプリケーションのデプロイ

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! This is ECS02." > index.html
      
    • ECS03 は、自己署名サーバー証明書とクライアント証明書を生成するために使用されます。OpenSSL サイトから OpenSSL をダウンロードし、ECS03 にインストールします。OpenSSL のバージョンは 1.1.1 以降です。既存の Linux サーバーを使用して自己署名証明書を生成する場合、ECS03 を作成する必要はありません。

  • NLB インスタンス用にサーバーグループが作成され、ECS01 と ECS02 がサーバーグループに追加されていること。この例では、ECS01 と ECS02 のバックエンドポートは 80 に設定されています。

    重要
    • サーバーグループのバックエンドプロトコルは TCP である必要があります。NLB からバックエンドサーバーに送信されるリクエストは SSL 復号され、バックエンドサーバーは受信したリクエストに対して SSL 復号を行う必要はありません。

    • TCP over SSL を使用するリスナーを、が有効になっているサーバーグループに関連付けることはできません。サーバーグループで クライアントアドレスの保持 機能が無効になっていることを確認してください。

ステップ 1:CA 証明書の準備

  1. Certificate Management Service コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、PCA 証明書管理 を選択します。

  3. PCA 証明書管理 ページで、プライベートca タブで、ルート CA 証明書を見つけます。

  4. ルート CA 証明書の横にある icon アイコンをクリックし、管理したいプライベート中間 CA を見つけ、操作 列の アプリケーション証明書 をクリックします。

  5. アプリケーション証明書 パネルで、パラメーターを設定し、申請の確認 をクリックします。

    以下のセクションでは、このトピックに関連するパラメーターについて説明します。詳細については、「プライベート証明書の管理」をご参照ください。

    パラメーター

    説明

    証明書タイプ

    購入するプライベート証明書の種類を選択します。この例では、 クライアント証明書 が選択されています。

    氏名

    クライアントユーザーの一意の識別子です。クライアント証明書にのみ必要です。

    この例では、NLB インスタンスのドメイン名を入力します。

    有効期間

    プライベート証明書の有効期間を指定します。プライベート証明書の有効期間は、購入するプライベート認証局 (PCA) サービスのサブスクリプション期間を超えることはできません。

    この例では、デフォルトの有効期間である 30 日が使用されます。

    リクエストが送信されると、プライベート証明書はすぐに発行されます。プライベート証明書の詳細を表示するには、プライベート CA を見つけ、操作 列の 証明書リスト をクリックし、証明書リスト ページで情報を表示します。

ステップ 2:サーバー証明書の準備

ブラウザは、サーバーから送信された証明書が信頼できる CA によって発行されたものであるかどうかを確認することで、サーバーの ID を検証します。このトピックでは、サーバー証明書を取得するために使用できる 2 つの方法について説明します。Certificate Management Service からサーバー証明書を購入するか、自己署名証明書を Certificate Management Service にアップロードすることができます。

方法 1:サーバー証明書の購入

Certificate Management Service または他のサービスプロバイダーからサーバー証明書を購入できます。詳細については、「SSL 証明書の購入」をご参照ください。

方法 2:自己署名サーバー証明書のアップロード

  1. ECS03 にリモートでログインし、次のコマンドを実行して自己署名サーバー証明書を生成します。CA 証明書が ECS03 に保存されていることを確認してください。この例で使用される CA 証明書ファイルは root.crtroot.key です。

    1. 次のコマンドを実行して、サーバー証明書の秘密鍵を生成します。

      sudo openssl genrsa -out server.key 4096
    2. 次のコマンドを実行して、証明書署名要求 (CSR) を生成します。

      sudo openssl req -new -out server.csr -key server.key

      他のパラメーターを設定します。例:

      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) []:www.example.com
      Email Address []:a.alibaba.com
      A challenge password []:
      An optional company name []:
      重要

      コモンネームをサーバー証明書に関連付けられているドメイン名に設定します。ドメイン名が有効であることを確認してください。他のパラメーターの値は、ルート証明書とクライアント証明書の値と同じにしてください。

      この例では、NLB インスタンスはカスタムドメイン名 www.example.com を使用して外部サービスを提供します。したがって、コモンネームは www.example.com に設定されます。

    3. 次のコマンドを実行して、サーバー証明書の公開鍵を生成します。

      sudo openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650

      次の図は結果を示しています。生成服务器证书

    4. 次のコマンドを実行して、サーバー証明書ファイルを保存するフォルダーを作成します。

      sudo mkdir -p /root/ssl
    5. 次のコマンドを実行して、サーバー証明書をフォルダーにコピーします。

      sudo cp server.crt /root/ssl
      sudo cp server.key /root/ssl
    6. 次のコマンドを実行して、サーバー証明書 server.crt とサーバー証明書の秘密鍵 server.key を表示します。

      cd /root/ssl
      ls

      次の図は結果を示しています。

      查看服务器证书

  2. この例では、Windows クライアントが使用されます。Windows クライアントでコマンドラインインターフェイス (CLI) を開き、次のコマンドを実行して、ステップ 1 で生成されたサーバー証明書ファイルをローカルデスクトップにエクスポートします。

    scp root@IPaddress:/root/ssl/server.crt C:\Users\Public\Desktop    # 'IPaddress' をサーバー証明書を生成するサーバーの IP アドレスに置き換えます
    scp root@IPaddress:/root/ssl/server.key C:\Users\Public\Desktop    # 'IPaddress' をサーバー証明書を生成するサーバーの IP アドレスに置き換えます
  3. Certificate Management Service コンソールにログインします。

  4. 左側のナビゲーションウィンドウで、証明書管理 > SSL 証明書管理 を選択します

  5. アップロードされた証明書の管理 タブをクリックし、証明書のアップロード をクリックします。

  6. 証明書のアップロード パネルで、次のパラメーターを設定し、OK をクリックします。

    詳細については、「SSL 証明書のアップロード、同期、共有」をご参照ください。

    パラメーター

    説明

    証明書アルゴリズム

    この例では、国際的に認められたアルゴリズム が選択されています。

    証明書名

    アップロードする証明書の名前を入力します。

    証明書ファイル

    PEM 形式でエンコードされた CA 証明書ファイルの内容を入力します。

    次のいずれかの方法で内容を入力できます。方法 1:テキストエディターを使用して PEM または CRT 形式の CA 証明書ファイルを開きます。次に、内容を [証明書ファイル] フィールドにコピーします。方法 2:[証明書ファイル] フィールドの下にある アップロードされたファイルの解析 をクリックします。次に、コンピューターから CA 証明書ファイルを選択して、ファイルの内容をアップロードします。

    この例では、サーバー証明書ファイル server.crt がアップロードされます。

    証明書秘密鍵

    PEM 形式でエンコードされた秘密鍵ファイルの内容を入力します。

    次のいずれかの方法で内容を入力できます。方法 1:テキストエディターを使用して KEY 形式の秘密鍵ファイルを開きます。次に、内容を [秘密鍵の追加] フィールドにコピーします。方法 2:[秘密鍵の追加] フィールドの下にある アップロードされたファイルの解析 をクリックします。次に、コンピューターから秘密鍵ファイルを選択して、ファイルの内容をアップロードします。

    この例では、秘密鍵ファイル server.key がアップロードされます。

    証明書チェーン

    証明書チェーンファイルの内容を入力します。このパラメーターは、この例では無視されます。

ステップ 3:クライアント証明書の準備

ビジネス要件に基づいて、次のいずれかの方法でクライアント証明書を準備できます。

  1. Certificate Management Service コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、PCA 証明書管理 を選択します。

  3. PCA 証明書管理 ページで、プライベートca タブで、ルート CA 証明書を見つけます。

    ルート CA 証明書の購入方法の詳細については、「プライベート CA の購入と有効化」をご参照ください。

  4. ルート CA 証明書を見つけ、icon アイコンをクリックします。次に、下位の CA 証明書を見つけ、操作証明書リスト をクリックします。

  5. 証明書リスト ページで、対象のプライベート証明書を見つけます。操作 列で、ダウンロード をクリックします。

  6. 証明書のダウンロード ダイアログボックスで、証明書の形式を選択し、確認してダウンロードする をクリックします。この例では、CRT 形式が選択され、クライアント証明書は client.crt、証明書の秘密鍵は client.key です。

  7. クライアント証明書をブラウザが認識できる PKCS12 ファイルに変換します。

    1. ECS03 にリモートでログインします。詳細については、「インスタンス接続のガイドライン」をご参照ください。

    2. 次のコマンドを実行して、クライアント証明書を保存するフォルダーを作成します。

      sudo mkdir -p /root/ca/users
    3. クライアント証明書 client.crt と証明書の秘密鍵 client.key を users ディレクトリにアップロードします。

    4. 次のコマンドを実行して、クライアント証明書を PKCS12 ファイルに変換します。

      sudo openssl pkcs12 -export -clcerts -in /root/ca/users/client.crt -inkey /root/ca/users/client.key -out /root/ca/users/client.p12
    5. 指示に従って、証明書の秘密鍵の暗号化キーを設定します。

    6. クライアント証明書のエクスポートに使用するパスワードを入力します。このパスワードはクライアント証明書を暗号化するために使用され、クライアント証明書のインストールに必要です。

      次の図は結果を示しています。P12

  8. 次のコマンドを実行して、生成されたクライアント証明書を表示します。

    cd /root/ca/users
    ls

    次の図は結果を示しています。客户端证书

  9. この例では、Windows クライアントが使用されます。CLI を開き、次のコマンドを実行してクライアント証明書をエクスポートします。

    scp root@IPaddress:/root/ca/users/client.p12 C:\Users\Public\Desktop   # 'IPaddress' をクライアント証明書を生成するサーバーの IP アドレスに置き換えます

ステップ 4:クライアント証明書のインストール

クライアントにクライアント証明書をインストールします。この例では、Windows クライアントと Linux クライアントを使用して、クライアント証明書のインストール方法を示します。

Windows クライアント

クライアント証明書を Microsoft Edge にインポートします。

  1. Microsoft Edge を開きます。右上隅で、... > [設定] を選択します。

  2. 左側のナビゲーションウィンドウで、[プライバシー、検索、サービス] タブをクリックします。次に、[セキュリティ] セクションの [証明書の管理] をクリックし、PKCS12 ファイルをインポートします。このステップでは、ステップ 3:クライアント証明書の準備 でクライアント証明書のエクスポートに使用したパスワードを入力する必要があります。

Linux クライアント

ECS03 を使用してクライアント証明書を生成した場合、クライアント証明書は ECS03 のディレクトリに保存されます。別の Linux クライアントを使用してクライアント証明書を生成した場合は、まず次の手順を実行して証明書を Linux クライアントのディレクトリにコピーします。

  1. Linux クライアントにログインします。次のコマンドを実行して、クライアント証明書、サーバー証明書、およびルート証明書をディレクトリにコピーします。

    1. 次のコマンドを実行してフォルダーを作成します。

      sudo mkdir /root/ca
    2. 次のコマンドを実行してディレクトリの権限を変更します。

      sudo chmod 700 /root/ca
    3. 次のコマンドを実行して、証明書を Linux クライアントのディレクトリにコピーします。

      次のパスは参考用です。実際に使用するパスを指定してください。

      sudo scp home@IPaddress:/root/ca/users/client.crt /root/ca     // 'IPaddress' をクライアント証明書を生成するサーバーの IP アドレスに置き換えます
      sudo scp home@IPaddress:/root/ca/root.crt /root/ca       // 'IPaddress' をルート証明書を生成するサーバーの IP アドレスに置き換えます
      sudo scp home@IPaddress:/root/ca/root.key /root/ca       // 'IPaddress' をルート証明書を生成するサーバーの IP アドレスに置き換えます
      sudo scp home@IPaddress:/root/ssl/server.crt /root/ca     // 'IPaddress' をサーバー証明書を生成するサーバーの IP アドレスに置き換えます
      sudo scp home@IPaddress:/root/SSL/server.key /root/ca     // 'IPaddress' をサーバー証明書を生成するサーバーの IP アドレスに置き換えます

ステップ 5:TCP over SSL を使用するリスナーの相互認証の設定

  1. NLB コンソールにログインします。

  2. トップナビゲーションバーで、NLB インスタンスのリージョンを選択します。

  3. インスタンス ページで、NLB インスタンスを見つけ、リスナーの作成 列の 操作 をクリックします。

  4. リスナーの設定 ステップで、次のパラメーターを設定し、次へ をクリックします。

    次の表では、一部のパラメーターのみを説明しています。他のパラメーターはデフォルト値のままにします。詳細については、「TCP over SSL を使用するリスナーの作成」をご参照ください。

    パラメーター

    手順

    リスナープロトコルの選択

    リスナープロトコルを選択します。この例では、[TCPSSL] が選択されています。

    リスナーポート

    NLB インスタンスがリッスンするポートを指定します。NLB インスタンスは、このポートを使用してリクエストを受信し、バックエンドサーバーにリクエストを転送します。この例では、[443] ポートを使用します。

  5. [SSL 証明書の設定] ステップで、ステップ 2:サーバー証明書の準備 で指定したサーバー証明書を サーバー証明書 ドロップダウンリストから選択します。

  6. 相互認証の有効化 をオンにします。ステップ 1 で購入した CA 証明書を [デフォルト CA 証明書] ドロップダウンリストから選択します。

  7. TLS セキュリティポリシー を選択し、次へ をクリックします。

  8. [サーバーグループの選択] ステップで、作成したサーバーグループを選択し、バックエンドサーバー ECS01 と ECS02 の情報を表示します。この例では、バックエンドサーバーのポートは 80 に設定されています。次に、次へ をクリックします。

  9. [設定の確認] ステップで、設定を確認し、送信 をクリックします。

ステップ 6:相互認証の検証

Windows クライアント

  1. NLB の インスタンス ページに移動し、管理したい NLB インスタンスの ID をクリックし、リスナー タブをクリックして、TCP over SSL を使用するリスナーのヘルスチェックステータスを表示します。

    ヘルスチェックステータス 列に 正常 と表示されている場合、バックエンドサーバーは NLB リスナーによって転送されたリクエストを処理できます。

  2. ブラウザのアドレスバーにhttps://サーバー証明書に関連付けられたドメイン名を入力します(例:https://www.example.com)。表示されるダイアログボックスで、クライアントの ID を検証するために使用する証明書を選択し、[OK]をクリックします。

  1. ブラウザのキャッシュによる問題を避けるため、レイヤー 4 負荷分散をテストする際は、プライベートブラウジングモードでドメイン名にアクセスすることを推奨します。結果は、リクエストが ECS01 と ECS02 に分散されたことを示しています。验证双向认证图1验证双向认证图2

Linux クライアント

ルート証明書、サーバー証明書、およびクライアント証明書が保存されている Linux クライアントにログインし、次のコマンドを実行して相互認証をテストします。

sudo curl --cert /root/ca/client.crt --key /root/ca/client.key --cacert /root/ca/root.crt www.example.com

www.example.com は、サーバー証明書に関連付けられているドメイン名です。

次のエコー応答パケットは、クライアントとサーバーの両方が相互認証に合格し、リクエストが ECS01 と ECS02 に分散されていることを示しています。验证1