¿Cómo definir qué certificado SSL envía nginx primero con SNI?

12

Uso nginx 1.2.7 con OpenSSL 0.9.8o en Debian Squeeze para aproximadamente 30 dominios. En dos de ellos habilité SSL, que funciona bien en ambos.

La configuración SSL se usa para ambos dominios:

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;

Comprobando ambos dominios con el comprobador ssllabs.com obtengo para un dominio el aviso "Este sitio solo funciona en navegadores con soporte SNI". Para el otro dominio no recibo este mensaje. Parece que nginx por defecto envía el certificado para el primer dominio alfabéticamente a clientes sin soporte SNI. ¿Puedo cambiar este comportamiento?

En otras palabras: quiero configurar nginx para que tenga un dominio específico con SSL funcionando incluso para clientes sin soporte SNI. Los otros dominios también deberían funcionar con SSL, pero está bien si solo funciona en clientes habilitados para SNI.

¡Gracias!

sidra
fuente

Respuestas:

20

La default_serverconfiguración de la listendirectiva debe determinar qué certificado se envía para una solicitud sin SNI establecido en el protocolo de enlace. Cambie la listendirectiva del valor predeterminado deseado:

listen 443 default_server ssl;
Shane Madden
fuente