如何定义Nginx首先使用SNI发送的SSL证书?


12

我在Debian Squeeze上将nginx 1.2.7与OpenSSL 0.9.8o一起用于大约30个域。我在其中两个上启用了SSL,这两种方法都可以正常使用。

SSL配置可用于两个域:

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;

使用ssllabs.com检查器检查两个域我得到一个域的通知“该站点仅在支持SNI的浏览器中工作”。对于其他域,我不会收到此消息。默认情况下,nginx似乎将按字母顺序的第一个域的证书发送给不支持SNI的客户端。我可以改变这种行为吗?

换句话说:我想将nginx配置为具有一个特定的域,即使没有SNI支持的客户端也可以使用SSL。其他域也应与SSL一起使用,但是如果仅在启用了SNI的客户端上可以使用,则可以。

谢谢!

Answers:


20

指令的default_server设置listen应确定在握手中未设置SNI的情况下发送请求的证书。更改listen所需默认值的指令:

listen 443 default_server ssl;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.