Application Load Balancer のセキュリティポリシーには、RSA 暗号と ECDSA 暗号がリスト化されていますしかし、Load Balancer に接続すると、RSA 暗号だけが選択されることが確認されています。
簡単な説明
Application Load Balancer の HTTPS リスナーには複数の証明書を設定することができます。ただし、HTTPS リスナーにはセキュリティポリシーが必要です。各セキュリティポリシーには、RSA と ECDSA の両暗号化アルゴリズムの暗号が含まれています。TLS ハンドシェイク中、Application Load Balancer は選択処理ロジックを使用して、HTTPS 接続に使用する Application Load Balancer 証明書を決定します。選択した証明書が RSA または ECDSA (楕円曲線) キーで作成されている場合、Application Load Balancer は暗号化を行うのに RSA または ECDSA 暗号を使用します。
解決方法
ECDSA 暗号をApplication Load Balancer で使用するには、次の手順を実行します。
新しい ECDSA 証明書を作成するか、ACM にインポートして HTTPS リスナーにバインドする
新しい ECDSA 証明書を作成する
まず、証明書の要件を決定します。次に、AWS Certificate Manager (ACM) に ECDSA 証明書をリクエストします。
ECDSA 証明書を ACM にインポートする
認証局と協力してドメインの ECDSA 証明書を .pem 形式で取得したら、新しい ECDSA 証明書を ACM にインポートします。
ECDSA 証明書を作成するか ACM にインポートしたら、証明書を Application Load Balancer に関連付けます。
(オプション) ロードバランサーのTLSリスナーがサポートする暗号をテストする
どのプロトコルと暗号が使用されているかをテストするには、sslscan など、オープンソースのコマンドラインツールを使用します。
注: サードパーティ製のユーティリティを追加で使用しなくても、sslscan を使用すれば、すべての暗号を網羅した情報を取得することができます。例えば、curl を使用した場合は、個々の暗号スイートを指定する必要があります。つまり、curl などのサードパーティ製ユーティリティには、TLS プロトコルと暗号スイートを指定する、当該ユーティリティの個別リクエストが必要です。
sslscan コマンドは、任意の Amazon Elastic Compute Cloud (Amazon EC2) Linux インスタンスまたはローカルシステムにインストールすることで実行可能です。テストするロードバランサーが発信元 IP アドレスからの TLS 接続を受け入れるかどうかを確認します。
Amazon Linux EC2 インスタンスで sslscan を使用するには、次の手順を実行してください。
-
Extra Packages for Enterprise Linux (EPEL) リポジトリを有効化します。
-
Amazon EC2 Linux インスタンスに sslscan をインストールします。
sudo yum install sslscan
- どの暗号がサポートされているか Application Load Balancer をスキャンするには、次のコマンドを実行します。example.com は自身のドメイン名に置き換えてください。
[ec2-user@ ~]$ sslscan --show-ciphers example.com | grep Accepted
以下の出力例は、Application Load Balancer で脆弱性スキャンを実行した結果を示しています。この例では、ロードバランサーは P-256 ECDSA 証明書とデフォルトのセキュリティポリシーを使用しています。
Accepted TLSv1 256 bits ECDHE-ECDSA-AES256-SHA
Accepted TLSv1 128 bits ECDHE-ECDSA-AES128-SHA
Accepted TLS11 256 bits ECDHE-ECDSA-AES256-SHA
Accepted TLS11 128 bits ECDHE-ECDSA-AES128-SHA
Accepted TLS12 256 bits ECDHE-ECDSA-AES256-GCM-SHA384
Accepted TLS12 256 bits ECDHE-ECDSA-AES256-SHA384
Accepted TLS12 256 bits ECDHE-ECDSA-AES256-SHA
Accepted TLS12 128 bits ECDHE-ECDSA-AES128-GCM-SHA256
Accepted TLS12 128 bits ECDHE-ECDSA-AES128-SHA256
Accepted TLS12 128 bits ECDHE-ECDSA-AES128-SHA
次の出力例では、ロードバランサーは RSA 2048 証明書とデフォルトのセキュリティポリシーを使用しています。
Accepted TLSv1 256 bits ECDHE-RSA-AES256-SHA
Accepted TLSv1 256 bits AES256-SHA
Accepted TLSv1 128 bits ECDHE-RSA-AES128-SHA
Accepted TLSv1 128 bits AES128-SHA
Accepted TLS11 256 bits ECDHE-RSA-AES256-SHA
Accepted TLS11 256 bits AES256-SHA
Accepted TLS11 128 bits ECDHE-RSA-AES128-SHA
Accepted TLS11 128 bits AES128-SHA
Accepted TLS12 256 bits ECDHE-RSA-AES256-GCM-SHA384
Accepted TLS12 256 bits ECDHE-RSA-AES256-SHA384
Accepted TLS12 256 bits ECDHE-RSA-AES256-SHA
Accepted TLS12 256 bits AES256-GCM-SHA384
Accepted TLS12 256 bits AES256-SHA256
Accepted TLS12 256 bits AES256-SHA
Accepted TLS12 128 bits ECDHE-RSA-AES128-GCM-SHA256
Accepted TLS12 128 bits ECDHE-RSA-AES128-SHA256
Accepted TLS12 128 bits ECDHE-RSA-AES128-SHA
Accepted TLS12 128 bits AES128-GCM-SHA256
Accepted TLS12 128 bits AES128-SHA256
Accepted TLS12 128 bits AES128-SHA
Application Load Balancer で ECDSA 証明書を正しく設定した場合、出力にはネゴシエートによる ECDHE-ECDSA-* 暗号スイートが示されます。出力に他の暗号スイートが表示される場合は、Application Load Balancer のセキュリティポリシーを確認の上、更新してください。