nginx可以在不同的服务器块中使用不同的SSL协议吗?

前端之家收集整理的这篇文章主要介绍了nginx可以在不同的服务器块中使用不同的SSL协议吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试设置一个主机名来演示一个糟糕的SSL配置,我遇到了一些问题.我可以指定一些不好的密码套件,但是Nginx似乎忽略了协议选择.

server {
    listen 443 spdy ssl;
    keepalive_timeout 70;
    server_name example.co.uk;
    client_max_body_size 10M;

    ssl_certificate /path/to/ssl.crt;
    ssl_certificate_key /path/to/ssl.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ...
}

server {
    listen 443 spdy ssl;
    keepalive_timeout 70;
    server_name weak.example.co.uk;
    client_max_body_size 10M;

    ssl_certificate /path/to/weakssl.crt;
    ssl_certificate_key /path/to/weakssl.key;
    ssl_protocols SSLv3;
    ...
}

Nginx可以使用我指定的不同密码套件,但似乎使用来自第一个服务器块的协议,以便weak.example.co.uk具有TLSv1 / 1.1 / 1.2且不支持SSLv3.

是否可以为每个服务器块指定不同的协议?

最佳答案
>使用Nginx -t检查配置是否已静态验证
>检查配置是否通过监视主级别定义的错误日志动态验证,同时发出重新加载(服务Nginx重新加载或kill -SIGHUP< nginx主PID>)
>在每个服务器中创建一个测试位置(见下文)
>确保您的Nginx是使用SNI扩展构建的(如果使用预先构建的软件包,通常是的)
>确保正在使用正确的服务器:如果通过SNI选择域名失败或SNI不可用,Nginx将回退到默认服务器以提供内容.除非明确指定,否则默认服务器是在配置文件中找到的第一个服务器.
>确保清理浏览器缓存(并且服务器和浏览器之间的任何缓存都会被更新/清除)

如果要提供错误的证书(没有SNI或服务器选择错误),您通常会收到证书警告,因为请求的域名与证书的域名不匹配.

这将显示当前连接使用的协议:

location /SSLProtocol {
    return 200 $ssl_protocol;
}

猜你在找的Nginx相关文章