こんにちは、Enterprise Cloud部 技術1課 宮形 です。今回BLOGでは、Elastic Load Balancing (以下ELB) をご利用の環境において、 HTTPS暗号化通信のうちTLS1.0、TLS1.1を無効化する設定手順を記載します。
TLS1.0、TLS1.1 を無効化する理由
TLS1.0、TLS1.1は古い規格の暗号化通信方式となっており、本BLOG執筆時点では脆弱性対策の観点で TLS1.2 以上で暗号化通信を行うことが推奨されます。2020年ころより IPA からTLS1.0、TLS1.1の利用は非推奨であることが告知されたことをうけて、各Webサイト、サービスでも順次対応がされております。AWSにおいても、AWS APIエンドポイントにおいて2023年に TLS1.0、TLS1.1 の終了が予告されています。
TLS 1.2 がすべての AWS API エンドポイントへの接続に必要な最小バージョンになります | Amazon Web Services ブログ
TLSは サーバーとクライアント両方が利用できる最上位バージョンが自動的に選択されますので、世の中殆どのクライアントデバイスでは特に何もせずとも TLS1.2 以上が選択されます。しかしながら、古いOS、ブラウザ、APIクライアントにおいては TLS1.2がサポートされていないケースがあり、下位互換のためサーバー側でも TLS1.0、TLS1.1 も利用できるようにしてきたという経緯があります。
これら古いOS、ブラウザ、APIクライアントは殆どが各メーカー提供元がサポートを終了しており利用は推奨されません。AWSの ELB においても TLS1.0、TLS1.1 の暗号化方式は無効にするのが望ましいと言えます。
現状の確認
先ずご自身のWebサイトで TLS1.0、TLS1.1 が有効・無効どちらなのかを確認することをお勧めします。
確認方法はいくつかありますが、無料で利用できるチェックサイトの利用がお手軽です。私はいつも Qualys SSL Labs の下記サイトを利用しています。
こちらのサイトでご自身ELBが動作する Webサイトの FQDN を入力して「Submit」をクリックすると診断が行われ、数分後にレポートが表示されます。このレポート中に TLS1.0、TLS1.1 有効・無効が記載されています。
下記のように表示される筈です。
Configuration - Protocols - TLS 1.3 : No - TLS 1.2 : Yes - TLS 1.1 : Yes - TLS 1.0 : Yes - SSL 3 : No - SSL 2 : No
TLS 1.0、TLS 1.1 が Yes となる場合、対応が必要となります。
なお、Webサイトをインターネット外部に公開していない場合や、Security Group でアクセス元を制限している場合、この確認方法は利用できません。アクセス可能なクライアントより sslscan コマンド等で確認します。
設定手順
設定手順はAWSマネージメントコンソール上から数クリックで行うことができます。3つのELB方式毎に手順を記載します。
Application Load Balancer
Application Load Balancer (以下ALB) の場合、AWSマネージメントコンソール上で下記操作によって設定を行います。
EC2コンソール - [ロードバランサー] - 一覧より対象のALB選択 - [リスナー]タブ - 一覧より [HTTPS:443] のチェックをオンにして [アクション] - [リスナーの編集] をクリックします。
表示される画面の [セキュアリスナーの設定] - [セキュリティポリシー] の一覧より [ELBSecurityPolicy-TLS-1-2-2017-01] を選択し、[変更内容の保存] をクリックします。
Network Load Balancer
Network Load Balancer (以下NLB) の場合、AWSマネージメントコンソール上で下記操作によって設定を行います。
EC2コンソール - [ロードバランサー] - 一覧より対象のNLB選択 - [リスナー]タブ - 一覧より [TLS:443] のチェックをオンにして [アクション] - [リスナーの編集] をクリックします。リスナーの一覧に TLS:443 が無い場合、ターゲットグループのEC2上ミドルウェアや後続ALBでSSL終端化を行っている可能性がありますので、そちら側で対応します。
表示される画面の [セキュアリスナーの設定] - [セキュリティポリシー] の一覧より [ELBSecurityPolicy-TLS-1-2-2017-01] を選択し、[変更内容の保存] をクリックします。
Classic Load Balancer
Classic Load Balancer (以下 CLB) の場合、AWSマネージメントコンソール上で下記操作によって設定を行います。
EC2コンソール - [ロードバランサー] - 一覧より対象のCLB選択 - [リスナー]タブ - 一覧より [ロードバランサーのプトロコル:HTTPS] の [暗号化:変更] をクリックします。
表示される画面の [事前定義されたセキュリティポリシー] 一覧より [ELBSecurityPolicy-TLS-1-2-2017-01] を選択し、[保存]をクリックします。
動作確認
再度 Qualys SSL Labs のサイトで確認します。TLS 1.0、TLS 1.1 が No であれば設定手順は完了です。Qualys SSL Labs のサイトは短い時間で同じFQDNサイトを診断すると、キャッシュからレポートが表示されてしまい前回同じ内容が表示される場合があります。画面内の「Clear Cache」をクリックすると、再度診断を行うことができます。
Configuration - Protocols - TLS 1.3 : No - TLS 1.2 : Yes - TLS 1.1 : No - TLS 1.0 : No - SSL 3 : No - SSL 2 : No
まとめ
AWS側での設定変更手順は簡単ですので、ご自身のWebサイトで TLS 1.0、TLS 1.1 が有効な環境をみつけましたら本BLOGをご参考に設定変更いただけると良いと思います。
冒頭記載しましたが、TLS 1.2 以上のみ有効化すると、古いOS、ブラウザ、APIクライアントが利用できなくなります。事前にWebサイト上で告知してから設定変更を行うのが望ましいとは思われます。
本BLOGの内容が少しでも皆様のお役にたてば幸いです。