ロードバランサーに接続しようとすると、クライアント SSL/TLS ネゴシエーションエラーが発生するのはなぜですか?
ロードバランサーに接続しようとすると、セキュアソケットレイヤー (SSL)/Transport Layer Security (TLS) のネゴシエーションエラーが表示されます。このエラーが表示されるのはなぜですか?
簡単な説明
クライアントの TLS ネゴシエーションエラーは、クライアントが開始した TLS 接続がロードバランサーとのセッションを確立できなかったことを意味します。TLS ネゴシエーションエラーは、ロードバランサーのセキュリティポリシーがサポートしていないプロトコルまたは暗号を使用してクライアントがロードバランサーに接続しようとしたときに発生します。TLS 接続を確立するには、クライアントが以下をサポートしていることを確認してください:
- 1 つ以上の一致する暗号
- セキュリティポリシーで指定されたプロトコル
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、使用している AWS CLI が最新バージョンであることを確認してください。
ロードバランサーのセキュリティポリシーを確認してください
AWS マネジメントコンソールから次のように行います:
1. Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
2. ナビゲーションペインの [ロードバランシング] で、[ロードバランサー] を選択します。
3. ロードバランサーを選択し、[リスナー] タブを選択してください。
4. セキュリティポリシーを表示します。
Application Load Balancer と Network Load Balancer については、「セキュリティポリシー」列でセキュリティ・ポリシーを検索してください。
Classic Load Balancer では、「暗号」列の [変更] を選択してセキュリティポリシーを表示します。
AWS CLI から:
- Application Load Balancer と Network Load Balancer の場合は describe-listeners コマンドを実行してください
- Classic Load Balancer の場合は、describe-load-balancers コマンドを実行してください
ロードバランサーのセキュリティポリシーでサポートされているプロトコルと暗号を決定します
Classic Load Balancer はカスタムセキュリティポリシーをサポートします。ただし、Application Load Balancer と Network Load Balancer はカスタムセキュリティポリシーをサポートしていません。そして、デフォルトのセキュリティポリシーを含むセキュリティポリシーの詳細については、以下を参照してください。
- Application Load Balancer のセキュリティポリシー
- Network Load Balancer のセキュリティポリシー
- Classic Load Balancer のセキュリティポリシー
(オプション) ロードバランサーのセキュリティポリシーをテストします
ロードバランサーのセキュリティポリシーでサポートされているプロトコルと暗号をテストするには、sslscan などのオープンソースのコマンドラインツールを使用します。
sslscan コマンドを使用します
sslscan コマンドは、任意の Amazon EC2 Linux インスタンスまたはローカルシステムにインストールすることで実行可能です。テストするロードバランサーが発信元 IP アドレスからの TLS 接続を受け入れるかどうかを確認してください。Amazon Linux EC2 インスタンスで sslscan を使用するには、
1. Extra Packages for Enterprise Linux (EPEL) リポジトリを有効化します。
2. sudo yum install sslscan コマンドを実行します。
3. 次のコマンドを実行して、サポートされている暗号についてロードバランサーをスキャンします。example.com は自身のドメイン名に置き換えてください。
[ec2-user@ ~]$ sslscan --show-ciphers example.com
openssl コマンドを使用します
または、openssl コマンドを使用してロードバランサーのセキュリティポリシーをテストすることもできます。openssl コマンドは、任意の Amazon EC2 Linux インスタンスまたはローカルシステムから実行できます。
特定の SSL/TLS バージョンでサポートされている暗号を一覧表示するには、openssl ciphers コマンドを使用します:
*$* openssl ciphers -v
たとえば、次のコマンドを実行すると、TLS バージョン TLSv1.2 でサポートされている暗号が表示されます:
*$* openssl ciphers -V | grep "TLSv1.2"
s_client コマンドを使用して TLS バージョンと暗号スイートをテストします。特定の暗号スイートの強度を調べるには、 ciphersuites.info などのウェブサイトリポジトリを使用できます。たとえば、次のコマンドを実行すると www.example.com の暗号が表示されます:
openssl s_client -connect example.com:443
たとえば、TLS_PSK_WITH_AES_128_CBC_SHA スイートは弱いと見なされます。スイートをサーバーに対して使用すると、次のエラーが表示されます:
openssl s_client -connect example.com:443 -cipher PSK-AES128-CBC-SHA -quiet 140062732593056:error:140740B5:SSL routines:SSL23_CLIENT_HELLO:no ciphers available:s23_clnt.c:508:
ECDHE-RSA-AES128-GCM-SHA256 スイートは強力だと考えられています。スイートをサーバーに対して使用すると、次のような成功メッセージが表示されます:
openssl s_client -connect example.com:443 -cipher ECDHE-RSA-AES128-GCM-SHA256 New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE No ALPN negotiated SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES128-GCM-SHA256 Session-ID: 73B49649716645B90D13E29656AEFEBF289A4956301AD9BC65D4832794E282CD Session-ID-ctx: Master-Key: C738D1E7160421281C4CAFEA49941895430168A4028B5D5F6CB6739B58A15235F640A5D740D368A4436CCAFD062B3338 Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None Start Time: 1647375807 Timeout : 300 (sec) Verify return code: 0 (ok)
openssl コマンドを使用して、接続に使用する TLS プロトコルのバージョンを指定することもできます。次の例は、TLS 1.1 がサーバーでサポートされていることを確認するテストを示しています:
openssl s_client -connect example.com:443 -tls1_1 -quiet depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root G2 verify return:1 depth=1 C = US, O = DigiCert Inc, CN = DigiCert Global CA G2 verify return:1 depth=0 CN = *.peg.a2z.com verify return:1
必要に応じて、ロードバランサーのセキュリティポリシーを更新してください
サポートされているプロトコルまたは暗号を使用し、必要なセキュリティレベルを実現するようにロードバランサーのセキュリティポリシーを更新するには、以下のアクションを実行します。
- アプリケーションロードバランサーのセキュリティポリシーを更新します
- ネットワークロードバランサーのセキュリティポリシーを更新してください
- クラシックロードバランサーのセキュリティポリシーを更新してください
関連するコンテンツ
- AWS公式更新しました 2ヶ月前
- AWS公式更新しました 1年前
- AWS公式更新しました 1年前