はじめに

cloudpackサポートの林です。
以下のELBに関して、デフォルト証明書と証明書リストの違いについての記事を書きたいと思います。

  • Application Load Balancer(ALB)
  • Network Load Balancer(NLB)

概要

  • NLB/ALBのデフォルトの証明書について
  • デフォルトの証明書はなぜ必要か
  • デフォルト証明書と証明書リストの違いは何か

内容

デフォルトの証明書はなぜ必要か?

HTTP トラフィックのセキュアな通信を確立するため、NLB/ALBにてHTTPS リスナーのプロトコルを使用して通信を行いたい際に証明書が必要となります。
※HTTPS リスナーを実現するためには、リスナーに SSL サーバー証明書を少なくとも 1 つデプロイする必要があります。
この際、必ずNLB/ALBに1つ設定(デプロイ)しなければならない証明書のことをデフォルトの証明書といいます。

Application Load Balancer 用の HTTPS リスナーを作成する

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/create-https-listener.html#default-certificate

デフォルトの証明書、証明書リスト 参照

デフォルト証明書と証明書リストの違いは何か

HTTPS リスナーを作成した際、リスナーの証明書リストを利用することができます。
そのリストを証明書リストといい、リストに証明書を追加することが可能となります。
デフォルト証明書はHTTPS リスナーを使用するためにデプロイする必要がある一方で、証明書リストは同NLB/ALBで複数のドメインを使用した際にドメインそれぞれで異なる証明書を使用したい際、証明書リストとして新規に追加することができます。
また、証明書リストに追加する証明書はデフォルト証明書とは違い必須ではございません。
※複数ドメインを運用したい際に追加するものになります。

証明書数 特徴 登録
デフォルト証明書 1 HTTPSの通信実現のため必要 必須
証明書リスト 複数可 対象ドメインに応じてSSL証明書を表示する 必須ではない

どのように1つのALBで複数のドメインごとにSSL証明書を表示することを可能にしているのか

SNI(Server Name Indication)のサポートによって運用化を可能にしている。
SNIとはSSL/TLSの拡張機能であり、複数ドメインにおいて複数のSSL証明書を使用可能にすることです。

Elastic Load Balancing: Application Load Balancers では現在、複数の SSL 証明書や Server Name Indication (SNI) を使用するスマート証明書セクションをサポートしています。

https://aws.amazon.com/jp/about-aws/whats-new/2017/10/elastic-load-balancing-application-load-balancers-now-support-multiple-ssl-certificates-and-smart-certificate-selection-using-server-name-indication-sni/

また、ドメインにアクセスした際の証明書の選択は、次の条件と優先順位に基づいて行われます。
※公式ドキュメントから引用(2023/01/31現在)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
パブリックキーアルゴリズム (RSA よりも ECDSA が優先)
↓
ハッシュアルゴリズム (MD5 よりも SHA が優先)
↓
キーの長さ (最大が優先)
↓
有効期間
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

証明書リスト 参照

Application Load Balancer 用の HTTPS リスナーを作成する

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/create-https-listener.html#default-certificate

実際の登録手順

すでにAWS Certificate Manager(ACM)にSSL/TLSサーバ証明書を導入していることを前提とします。
※対象のELBと同様のリージョンで発行する必要がございます。

以下、ALBにて登録した手順となります。

デフォルト証明書(hayashi.tech)

①HTTPS リスナーを追加します。

②ACMからデフォルト証明書を選択します。

③HTTPS リスナーが追加されたことを確認します。

証明書リスト(hayashi-sub.teck)

①HTTPS リスナーを選択します。

②証明書の追加を選択します。

③保留中として選択します。

④保留中の証明書を追加します。

⑤証明書リストに対象の証明書が追加されたことを確認します。

まとめ

以上、デフォルト証明書と証明書リストの違いとなります。
Application Load Balancer (ALB) または Network Load Balancer (NLB) はSNIを使用することで複数の証明書の追加機能をサポートしております。この技術により、1台のALBで複数のHTTPS対応のWEBサイト等を運用できるため、便利ですね。