Nginx和openSSL conf使用最新的TLS协议

自从几个星期以来,我的networking服务器Niginx在TLS协议1.1和1.2版本中遇到了问题:

  • 当用户尝试连接到我的网站时,Web浏览器和Nginx selectTLS 1.0作为连接。

  • 在Nginx的虚拟主机conf文件中,我提到要使用TLS 1.0,1.1和1.2:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AES256-SHA256:AES256-SHA; ssl_prefer_server_ciphers on; 
  • 软件包版本(两者都是最新版本):

nginx版本:nginx / 1.4.2启用了TLS SNI支持的configuration参数:–prefix = / etc / nginx –sbin -path = / usr / sbin / nginx –conf -path = /etc/nginx/nginx.conf – -error-log-path = / var / log / nginx / error.log –http-log-path = / var / log / nginx / access.log –pid-path = / var / run / nginx.pid – -lock-path = / var / run / nginx.lock –http-client-body-temp-path = / var / cache / nginx / client_temp –http-proxy-temp-path = / var / cache / nginx / proxy_temp –http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp –http-uwsgi-temp-path = / var / cache / nginx / uwsgi_temp –http -script -temp path = / var / cache / nginx / scgi_temp –user = nginx –group = nginx –with-http_ssl_module –with-http_realip_module –with-http_addition_module –with-http_sub_module –with-http_dav_module –with-http_flv_module –with-http_mp4_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_random_index_module –with-http_secure_link_module –with-http_stub_status_module –with-mail –with-mail_ssl_module –with-file-aio –with-cc-opt = '-g -O2 -Wp,-D_FORTIFY_S OURCE = 2'–with-ld-opt = –with-ipv6

OpenSSL 1.0.1e 2013年2月11日

  • Linux发行版:Debian 7.1 x64

  • Qualys SSL实验室结果

TLS 1.2 No

TLS 1.1 No

TLS 1.0是的

SSL 3号

SSL 2号

  • 我试图重新启动,更新,注意。 我检查了每个虚拟主机的nginx conf文件:所有的参数都与ssl_protocols具有相同的参数。

我的错误是什么?

谢谢

哈福林格马

不用搞乱你的系统随附的openssl版本,你可以尝试用自定义的openssl版本来构buildnginx。 构buildnginx包时指定以下选项。 我用我的自定义rpm和最新的openssl版本来做到这一点。

 --with-openssl=/home/mschirrmeister/openssl-1.0.1f 

一旦像这样构build,只安装在您的服务器上的nginx包,并再次尝试ssllabstesting。 它现在应该显示对更多版本的支持。

对不起,我的英语不好。 我有同样的情况,花了我很多时间来找出.nginx读取的第一个ssl_protocol关键字支配nginx conf中的所有服务器的ssl协议。

更改所有服务器configuration的“ssl_protocol”值(实际上只是第一个就可以)包含值“TLSv1.2”可能工作。

openssl 1.0.1e没问题。 但是你的操作系统可能有两个版本的libssl(我的版本是0.9.8和1.0.1e)。 所以你的nginx可能链接到libssl 0.9.8。

尝试使用指定的最新版本的openssl源代码编译nginx。

我认为你必须使用

 ssl_protocols TLSv1.2 TLSv1.1 TLSv1; 

 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 

这里是我通常用于nginx的SSLconfiguration:

 ssl on; ssl_certificate /etc/nginx/ssl/<domain>/server.crt; ssl_certificate_key /etc/nginx/ssl/<domain>/server.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; 

这是工作configurationprod服务器,请尝试:

 ssl_session_timeout 10m; ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH; ssl_session_cache shared:SSL:10m; ssl_prefer_server_ciphers on; 

然后重新运行Qualys SSL。