はじめに
AWSで複数のドメイン名を利用する際、SNI(Server Name Indication) を活用することで、複数の証明書を効率的に扱うことができます。この記事では、SNIの基本的な概念と、ELB(Elastic Load Balancer)での利用方法をわかりやすく解説します。
通常のサーバー証明書の制限と問題点
通常、サーバー証明書は1つのパブリックIPアドレスに1つのドメイン名を紐付ける形で使用されます。そのため、以下のような問題が発生します。
例:複数のドメイン名を持つWebサーバーの場合
例えば、1台のWebサーバーでexample.comとexample.co.jpの2つのドメインを運用する場合、それぞれに異なる証明書が必要です。通常は、ドメインごとに異なるパブリックIPアドレスを取得し、サーバー証明書を導入する必要があります。
しかし、ELBを使用して複数のドメイン名を同じWebサーバーに転送しようとすると、クライアント側から見たWebサーバーのパブリックIPアドレスはELBのパブリックIPアドレスしかありません。そのため、通常のサーバー証明書では対応できません。
SNI(Server Name Indication)の仕組み
SNI(Server Name Indication) とは、暗号化通信においてサーバー証明書をパブリックIPアドレスではなく、ドメイン名によって判断する技術です。
SNIに対応したELBに複数のサーバー証明書を導入すると、ELBはクライアントがリクエストしたドメイン名を確認し、適切なサーバー証明書を選択して通信を転送します。これにより、複数のドメイン名を1つのELBで効率的に処理できるようになります。
SNIが対応するELBの種類
- ALB(Application Load Balancer)
- NLB(Network Load Balancer)
SNIを利用するメリット
SNIを利用することで、以下のメリットがあります。
-
コスト削減
- 複数のドメインを1つのELBで管理できるため、複数のパブリックIPアドレスを取得する必要がなくなります。
-
運用の簡素化
- サーバー証明書の管理が簡単になります。複数の証明書を同一のELB上で扱えます。
-
柔軟なスケーラビリティ
- SNIに対応することで、さまざまなWebアプリケーションを1つのELBでサポートできます。
具体的な利用シーン
例1:ECサイトで複数のブランドを運用
- example.com → 主力ブランド
- example.co.jp → 日本市場向けブランド
これらのドメインを1つのALBに統合し、SNIを活用して異なる証明書を適用することで、運用を効率化できます。
例2:マルチテナント環境のWebサービス
マルチテナント環境では、顧客ごとに異なるドメイン名を利用することがあります。SNIを使用することで、すべての顧客ドメインを1つのNLBまたはALBで管理可能です。
SNI利用時の注意点
-
SNI非対応クライアント
- 古いブラウザや一部のクライアントはSNIに対応していません。サポート対象のクライアントを確認する必要があります。
-
証明書の有効期限管理
- 複数の証明書を導入する場合、それぞれの証明書の有効期限を管理する必要があります。
-
負荷分散設定の確認
- ALBまたはNLBの設定で、SNIが適切に動作するように確認することが重要です。
まとめ
SNIを利用することで、複数のドメイン名を効率的に1つのELBで管理でき、運用コストの削減やスケーラビリティの向上が期待できます。AWS環境で複数ドメインを扱う場合は、ぜひSNIを活用してみてください。
参考リンク
著者について
クラウド技術に関する情報を共有しています。この記事が参考になりましたら、ぜひ「いいね」や「フォロー」をお願いします!