Nginx'te joker karakter sertifikası kullanan birden çok SSL vhost


14

HTTP'ler üzerinden sunmak istediğim aynı alan adını paylaşan iki ana bilgisayar adım var. Bir joker karakter SSL sertifikam var ve iki vhost yapılandırması oluşturdum:

Ana Bilgisayar 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;

Ana Bilgisayar 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;

Ancak, aynı vhost her iki ana bilgisayar adı için hizmet alıyorum.

Yanıtlar:


17

Vhost'ları SSL dinleme / yapılandırma kısmından ayırmanız gerekir:

Dinleme bölümü:

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;
}

Ve şimdi hayaletler:

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;
}

Bu işe yaramaz. Bir hayalet gerekir ssl_certificateve ssl_certificate_keybunun içinde serverveya httpkonumunda yapılandırılması gerekir . Örneğinizde, ilk serverkonumun içinde ilan ettiniz, ancak diğer iki hayalet için beyan etmediniz.
Pothi Kalimuthu

2
o yapılandırmak için yeterli ssl_certificate, ssl_certificate_keyve ssldefault_server yalnızca. BTW, bu yapılandırma aslında çalışır.
teftin

Ne yazık ki bu işe yaramaz: nginx her iki ana bilgisayarda aynı vhost içeriğini sunar.
vincent.io

2
Görünüşe göre bu değişiklikleri yaparken nginx'i yeniden yüklemek yerine yeniden başlatmanız gerekiyor . Çok teşekkürler, cevabınız bir cazibe gibi çalışıyor :)
vincent.io

1
Bunun için teşekkürler, bunun 1.4.x nginx ile çalışması ssliçin listenyönergeye ihtiyacım vardı . Benim listensankonlar yönergelerin da tam anlamıyla olmak zorunda aynı (mantıksal denklik yeterli değildi).
Dave

13

Aslında kılavuzda açıklanmıştır: 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;
}

Şimdi, çok fazla siteniz varsa, hepsini tek bir dosyada yukarıdaki sunucu {} kısmı olan bir klasörde ve tümünü yüklemek için ana dosyada bir içerme yönergesi saklamanızı öneririm:

ssl_certificate /etc/ssl/wildcard.cer;
ssl_certificate_key /etc/ssl/wildcard.key;
include /etc/nginx/conf.d/subfolder/*;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.