Comment définir quel certificat SSL Nginx envoie en premier avec SNI?

12

J'utilise nginx 1.2.7 avec OpenSSL 0.9.8o sur Debian Squeeze pour environ 30 domaines. Sur deux d'entre eux, j'ai activé SSL qui fonctionne bien sur les deux.

La configuration SSL est utilisée pour les deux domaines:

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;

Vérification des deux domaines avec le vérificateur ssllabs.com J'obtiens pour un domaine l'avis "Ce site ne fonctionne que dans les navigateurs avec prise en charge SNI.". Pour l'autre domaine, je ne reçois pas ce message. Il semble que nginx envoie par défaut le certificat du premier domaine alphabétique aux clients sans prise en charge SNI. Puis-je changer ce comportement?

En d'autres termes: je veux configurer nginx pour avoir un domaine spécifique avec SSL fonctionnant même pour les clients sans support SNI. Les autres domaines devraient également fonctionner avec SSL, mais c'est OK si cela ne fonctionne que sur les clients compatibles SNI.

Merci!

Cidre
la source

Réponses:

20

Le default_serverparamètre de la listendirective doit déterminer quel certificat est envoyé pour une demande sans SNI défini dans la poignée de main. Modifiez la listendirective de la valeur par défaut souhaitée:

listen 443 default_server ssl;
Shane Madden
la source