ws.mysite.example
で動作するwebsocketサーバーを作成しています。 WebソケットサーバーをSSLで暗号化し、domain.example
をSSLで暗号化したい。作成したサブドメインごとに新しい証明書を購入する必要がありますか?作成したサブドメインごとに専用のIPアドレスが必要ですか?おそらく複数のサブドメインがあります。
Ubuntuで実行されているNGINXとGunicornを使用しています。
2つのステップでこれに答えます...
各サブドメインにSSL証明書が必要ですか?
はい、いいえ、それは異なります。標準のSSL証明書は単一ドメイン用で、たとえばwww.domain.example
です。標準の単一ドメイン証明書以外に、さまざまなタイプの証明書があります。ワイルドカードおよびマルチドメイン証明書
*.domain.example
のようなものに対してワイルドカード証明書が発行され、クライアントはこれをdomain.example
やwww.domain.example
などのws.domain.example
で終わるすべてのドメインに対して有効として扱います。
multi domain certは、定義済みのドメイン名のリストに有効です。これは、証明書の[サブジェクトの別名]フィールドを使用して行われます。たとえば、domain.example
およびws.mysite.example
のマルチドメイン証明書が必要であることをCAに伝えることができます。これにより、両方のドメイン名に使用できます。
これらのオプションのどちらも機能しない場合は、2つの異なるSSL証明書が必要です。
各サブドメインに専用IPが必要ですか?
繰り返しますが、これは「はい」と「いいえ」です...すべては、Web /アプリケーションサーバーに依存します。私はWindowsの人なので、IISの例で答えます。
IIS7以前を実行している場合は、SSL証明書をIPにバインドする必要があり、1つのIPに複数の証明書を割り当てることはできません。これにより、サブドメインごとに専用のSSL証明書を使用している場合、サブドメインごとに異なるIPが必要になります。マルチドメイン証明書またはワイルドカード証明書を使用している場合、最初はSSL証明書が1つしかないため、単一のIPを使用できます。
IIS8以降を実行している場合、同じことが当てはまります。ただし、IIS8 +にはサーバー名表示(SNI)と呼ばれるもののサポートが含まれています。 SNIを使用すると、SSL証明書をIPではなくホスト名にバインドできます。したがって、要求の作成に使用されるホスト名(サーバー名)は、IISが要求に使用する必要があるSSL証明書を示すために使用されます。
単一のIPを使用する場合は、特定のホスト名の要求に応答するようにWebサイトを構成できます。
ApacheとTomcatもSNIをサポートしていることは知っていますが、SNIをサポートしているバージョンを知るには十分に詳しくありません。
ボトムライン
アプリケーション/ Webサーバー、および取得できるSSL証明書の種類に応じて、オプションが決まります。
各サブドメインの証明書、複数のサブドメインの証明書、または ワイルドカード証明書 (*.yoursite.example
)。
ただし、通常は通常の証明書よりもかなりコストがかかります。また、単一の証明書を共有するため、anything.mydomain.example
実行可能な唯一の選択肢であるアプリケーションのタイプ。
SNI対応のWebサーバー がある場合も、複数のIPアドレスは必要ありません。つまり、SNIは最新のブラウザーでのみサポートされています(IE6以下では使用できません)。 NginxとApacheの最近のバージョンはSNIを透過的にサポートしています(SSL対応の仮想ホストを追加するだけです)。
サブドメインごとに個別の証明書が必要になるか、ワイルドカード証明書(*.domain.example
)-より高価ですが、多くのサブドメインをホストしている場合は理にかなっています。
IPに関しては、サーバーの設定方法によって異なります。ホスト名ルールを使用して、同じIPから複数のサイトにサービスを提供したり、各サイトに一意のIPを使用したりできます。どちらの方法にも長所と短所があります。