Bearbeiten November 2014: die erste Antwort ist nicht korrekt und unvollständig; es brauchte eine Auffrischung! hier ist es.
Grundsätzlich gibt es zwei Fälle
- Sie besitzen ein Wildcard-Zertifikat (oder Multi-Domänen-Zertifikat)
In diesem Fall können Sie mehrere vhosts verwenden auf die gleiche IP-Adresse hören/https port, und beide vhosts verwenden das gleiche Zertifikat (Überwachung auf allen Schnittstellen), z
server {
listen 443;
server_name webmail.example.com;
root /var/www/html/docs/sslexampledata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
server {
listen 443;
server_name webmail.beispiel.de;
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
oder in Ihnen konkreten Fall beide Domänen mit den gleichen Daten dienten
server {
listen 443;
server_name webmail.example.com webmail.beispiel.de; # <== 2 domains
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
- Sie haben zwei (+) verschiedene Zertifikate
Der Fall oben (eine IP für alle Zertifikate) funktioniert weiterhin mit modernen Browsern über Server Name Indication. SNI lässt den Client (Browser) den Host, den er erreichen möchte, im Anforderungsheader senden, so dass der Server (nginx) mit vhosts umgehen kann, bevor er sich mit dem Zertifikat befassen muss. Die Konfiguration ist die gleiche wie oben, außer dass jeder vhost ein spezifisches Zertifikat, crt und Schlüssel hat.
(nginx support SNI from 0.9.8f, check your nginx server is SNI compliant)
(also, SF talks about SNI and browser support)
Andernfalls, wenn Sie auch älteren Browser erreichen wollen, müssen Sie mehr vhosts jeweils eine verschiedene IP-Adressen/https-Ports hören, zum Beispiel
server {
listen 1.2.3.4:443; # <== IP 1.2.3.4
server_name webmail.example.com;
root /var/www/html/docs/sslexampledata;
ssl on;
ssl_certificate /var/www/ssl/certifIP1example.crt;
ssl_certificate_key /var/www/ssl/certifIP1example.key;
...
}
server {
listen 101.102.103:443; <== different IP
server_name webmail.beispiel.de;
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/certifIP2beispiel.crt;
ssl_certificate_key /var/www/ssl/certifIP2beispiel.key;
...
}
Der Grund ist gut explained here.
Shure, das ist eine Lösung, aber keine nette. Einen vhost zu ändern bedeutet, den anderen zu ändern. Und mindestens wird es 4 vhosts geben ... – PascalTurbo
Bitte beachten Sie das Update. Ich empfehle jedoch die 1. Lösung. –
Siehe http://nginx.org/en/docs/http/configuring_https_servers.html # certificate_with_several_names – barbolo