見出し画像

SNIカスタムSSL_効率的なマルチドメインSSLセキュリティ #414

複数のドメインに対して効率的にSSLセキュリティを提供するためのSNIカスタムSSLについて解説します。

TLSプロトコルのSNI拡張

まず大前提についてです。従来、1つのIPアドレスに1つのSSL/TLS証明書しか関連付けることができませんでした。

一方で、事業の拡大やグローバル化などに伴い、1つのサーバーで複数のドメインを運用したいケースが出てきます。そのような場合、それぞれのドメインに異なるIPアドレスを割り当てる必要がありました。これは非効率的ですし、IPアドレスの有限性も考慮するとスケーラビリティに問題があります。

SNI (Server Name Indication)はそんな課題を解決するために登場しました

SNIの機能

SNIを使用すると、TLSハンドシェイクの初期段階でクライアントが接続先のホスト名(例: example.com)を明示的にサーバーに伝えます。サーバーはこの情報を基に適切なSSL/TLS証明書をクライアントに提供します。

利点

  • 1つのサーバー(またはIPアドレス)で複数のSSL/TLSサイトを運用できる

  • IPアドレスの消費を抑えられる

  • 証明書の管理が効率的になる


証明書の管理が大変

SNIは「どの証明書を使用するか」を効率的に決定する技術的な手段を提供しました。

しかし複数の証明書を管理、設定、自動更新、コストの最適化するには操作上の課題や複雑さがあることに加え、新しいドメインを追加するたびにSSL証明書を再認証・再修正する手間やコストがかかります。

そこで、一つのウェブサーバーやインフラ上で、これらを効率的に管理するソリューションが求められました。


SNIカスタムSSLの登場

Server Name Indication(SNI)カスタムSSLはそんな課題を解決するために登場しました。

以下ではAWS上での機能として解説します。

SNIカスタムSSLは、Transport Layer Security(TLS)プロトコルのSNI拡張を利用して、証明書の一元管理、簡単な設定、証明書の自動更新、コスト削減などの利点を提供します。新しいドメインを追加するたびに証明書を再認証・再修正する必要もありません。

つまり、一つのIPアドレス上で複数のドメインにSSLトラフィックを簡単に提供します。


実装の流れ

SNIを実用的に使うためのステップはシンプルです。

  • コンソールを使ってALB内のドメインの全てのSSL証明書をアップロード

  • ロードバランサーのセキュアリスナーに複数の証明書をバインド

  • (クライアントからサーバーにリクエストしてるホスト名を通知)

  • ALBがSNIを利用して、接続する各クライアントに適切なTLS証明書を自動で提供


ここまでお読みいただきありがとうございました!!

この記事が気に入ったらサポートをしてみませんか?