我在 Debian Squeeze 上为大约 30 个域使用了 nginx 1.2.7 和 OpenSSL 0.9.8o。在其中两个域上我启用了 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 配置为让一个特定域的 SSL 即使在不支持 SNI 的客户端上也能正常工作。其他域也应该可以使用 SSL,但如果它仅在启用了 SNI 的客户端上工作,那就没问题了。
谢谢!
答案1
default_server
指令的设置应listen
确定在握手中未设置 SNI 的请求将发送哪个证书。更改listen
所需默认值的指令:
listen 443 default_server ssl;