Wie definiere ich, welches SSL-Zertifikat Nginx zuerst mit SNI sendet?


12

Ich verwende Nginx 1.2.7 mit OpenSSL 0.9.8o unter Debian Squeeze für ungefähr 30 Domains. Auf zwei von ihnen habe ich SSL aktiviert, was auf beiden gut funktioniert.

Die SSL-Konfiguration wird für beide Domänen verwendet:

listen 443 ssl;
ssl_certificate /etc/nginx/ssl/example.org-unified.crt;
ssl_certificate_key /etc/nginx/ssl/example.org.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security max-age=600000;

Wenn ich beide Domains mit dem ssllabs.com-Checker überprüfe, erhalte ich für eine Domain den Hinweis "Diese Site funktioniert nur in Browsern mit SNI-Unterstützung.". Für die andere Domain erhalte ich diese Nachricht nicht. Es scheint, als ob Nginx standardmäßig das Zertifikat für die alphabetisch erste Domain an Clients ohne SNI-Unterstützung sendet. Kann ich dieses Verhalten ändern?

Mit anderen Worten: Ich möchte Nginx so konfigurieren, dass eine bestimmte Domäne mit SSL auch für Clients ohne SNI-Unterstützung funktioniert. Die anderen Domänen sollten ebenfalls mit SSL funktionieren, aber es ist in Ordnung, wenn es nur auf SNI-fähigen Clients funktioniert.

Vielen Dank!

Antworten:


20

Die default_serverEinstellung der listenDirektive sollte bestimmen, welches Zertifikat für eine Anfrage ohne im Handshake eingestellte SNI gesendet wird. Ändern Sie die listenDirektive des gewünschten Standards:

listen 443 default_server ssl;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.