Come definire quale certificato SSL nginx invia per primo con SNI?


12

Uso nginx 1.2.7 con OpenSSL 0.9.8o su Debian Squeeze per circa 30 domini. Su due di essi ho abilitato SSL che funziona bene su entrambi.

La configurazione SSL viene utilizzata per entrambi i domini:

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;

Controllando entrambi i domini con il controllo ssllabs.com ricevo per un dominio l'avviso "Questo sito funziona solo nei browser con supporto SNI". Per l'altro dominio non ricevo questo messaggio. Sembra che nginx per impostazione predefinita invii il certificato per il primo dominio alfabetico ai client senza supporto SNI. Posso cambiare questo comportamento?

In altre parole: voglio configurare nginx per avere un dominio specifico con SSL funzionante anche per client senza supporto SNI. Gli altri domini dovrebbero funzionare anche con SSL, ma è OK se funziona solo su client abilitati SNI.

Grazie!

Risposte:


20

L' default_serverimpostazione della listendirettiva dovrebbe determinare quale certificato viene inviato per una richiesta senza SNI impostato nell'handshake. Modifica la listendirettiva del valore predefinito desiderato:

listen 443 default_server ssl;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.