nginxでワイルドカード証明書を使用する複数のSSL仮想ホスト


14

HTTP経由で提供する同じドメイン名を共有する2つのホスト名があります。ワイルドカードSSL証明書を取得し、2つの仮想ホスト構成を作成しました。

ホストA

listen      127.0.0.1:443 ssl;
server_name     a.example.com;
root        /data/httpd/a.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;

ホストB

listen      127.0.0.1:443 ssl;
server_name     b.example.com;
root        /data/httpd/b.example.com;
ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;

ただし、どちらのホスト名でも同じ仮想ホストが提供されます。

回答:


17

ssl listen / configuration部分から仮想ホストを分割する必要があります。

リスニングパート:

server {
  listen              127.0.0.1:443 default_server ssl;
  server_name         _;
  ssl_certificate     /etc/ssl/wildcard.cer;
  ssl_certificate_key /etc/ssl/wildcard.key;
}

そして今、vhosts:

server {
  listen      127.0.0.1:443;
  server_name a.example.com;
  root        /data/httpd/a.example.com;
}

server {
  listen      127.0.0.1:443;
  server_name b.example.com;
  root        /data/httpd/b.example.com;
}

これは機能しません。仮想ホストが必要でssl_certificateあり、ssl_certificate_keyそれは内部serverまたはhttp場所で構成する必要があります。この例では、最初のserver場所で宣言していますが、他の2つのvhostに対しては宣言していません。
ポティカリムトゥ

2
それは、configureに十分だssl_certificatessl_certificate_keysslDEFAULT_SERVERだけに。ところで、この設定は実際に動作します。
テフチン

残念ながら、これは機能しません。nginxは両方のホストで同じvhostコンテンツを提供します。
vincent.io

2
どうやら、これらの変更を行うとき、nginxをリロードする代わりに起動する必要があるようです。多くのおかげで、あなたの答えは魅力のように機能します:)
vincent.io

1
このおかげで、1.4.xのnginxで動作するためssllistenディレクティブが必要になりました。listen仮想ホスト内の私のディレクティブも文字通り同じである必要がありました(論理的な同等性は十分ではありませんでした)。
デイブS。14年

13

実際にはマニュアルで説明されています:http : //nginx.org/en/docs/http/configuring_https_servers.html#certificate_with_several_names

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
server {
  listen      443 ssl;
  server_name a.example.com;
  root        /data/httpd/a.example.com;
}
server {
  listen      443 ssl;
  server_name b.example.com;
  root        /data/httpd/b.example.com;
}

さて、多くのサイトがある場合は、上記のようにserver {}部分だけを含むフォルダーにすべてのサイトを単一のファイルに保存し、メインファイルにすべてのサイトを読み込むincludeディレクティブを保存することをお勧めします。

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
include /etc/nginx/conf.d/subfolder/*;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.