ALB のデフォルト証明書と SNI リスナー証明書がなんなのかまとめました。

デフォルト証明書

  • HTTPS リスナーを作成する際に必ず一つ指定する必要がある証明書
  • 一致する証明書がない場合に使用される
  • クライアントが SNI をサポートしていない場合に使用される

SNI(Server Name Indication)

  • SSL/TLS の拡張仕様の一つ
  • クライアントからサーバーへの接続開始時に目的のホスト名を伝達する仕組み
  • 目的:
    • 一つのIPアドレスで複数のホスト名(ドメイン)に対して異なるSSL証明書を使用可能にする
  • 動作:
    • クライアントがSSLハンドシェイクの際に、アクセスしたいサーバーのドメイン名をサーバーに通知する
  • メリット:
    • サーバーリソースの効率的な使用
    • IP アドレスの節約
    • ユーザーの独自ドメイン名とSSLサーバー証明書のドメイン名の一致

SNI リスナー証明書

  • オプションで最大25個まで追加可能
  • 複数のドメインに対して異なる証明書を使用可能
  • クライアントがSNIに対応している場合に使用される

動作の違い

  • 証明書の選択:SNIをサポートするクライアントの場合、ALBはクライアントが要求したホスト名に基づいて適切な証明書を選択
  • フォールバック:SNIをサポートしないクライアントや、一致する証明書がない場合は、デフォルト証明書が使用される
  • 柔軟性:SNIを使用することで一つのALBで複数のドメインに対して異なる証明書を提供できるため、より柔軟な構成が可能になる

SNIをサポートしていないクライアント対応を想定するべきか

  • 想定不要(ほとんどの最新ブラウザはSNIをサポート)
  • 非対応クライアント例:
    • Windows XP 以前
    • Internet Explorer 6 以前
    • Java 1.6 以前
    • ガラケー

SNIリスナー証明書のメリット

  • 一つのHTTPSリスナーで複数ドメイン証明書を管理可能
  • 非使用ケース:
    • マルチドメイン証明書を使用する場合
    • ワイルドカード証明書を使用する場合
    • ドメイン数が25を超える場合

まとめ

  • デフォルト証明書はHTTPSリスナーの基本要件
  • SNIリスナー証明書は複数ドメイン対応の拡張機能
  • 1つのALBで複数HTTPSサイトを効率的に運用可能

参考

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/listener-update-certificates.html

https://aws.amazon.com/jp/blogs/aws/new-application-load-balancer-sni/

https://docs.aws.amazon.com/ja_jp/elasticloadbalancing/latest/application/https-listener-certificates.html