Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 如何在NGINX中禁用tls1.0?_Ssl_Nginx_Configuration_Ssl Certificate_Tls1.2 - Fatal编程技术网

Ssl 如何在NGINX中禁用tls1.0?

Ssl 如何在NGINX中禁用tls1.0?,ssl,nginx,configuration,ssl-certificate,tls1.2,Ssl,Nginx,Configuration,Ssl Certificate,Tls1.2,在nginx.conf中的服务器级别上,我有: ssl_protocols TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:E

在nginx.conf中的
服务器
级别上,我有:

ssl_protocols  TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';  
但不管我什么时候跑步:

openssl s_client -connect www.example.com:443 -tls1
我获得了TLS 1.0的有效连接。SSLLabs将站点的nginx设置作为A,但使用tls1.0

root@qa-ebd:~# openssl version -a
OpenSSL 1.0.2j  26 Sep 2016
built on: reproducible build, date unspecified
platform: linux-x86_64
options:  bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
compiler: gcc -I. -I.. -I../include  -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/openssl"
root@qa-ebd:~# 
root@qa-ebd:~# 
root@qa-ebd:~# nginx -V
nginx version: nginx/1.10.2
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --prefix=/opt/nginx  --with-http_ssl_module   --with-http_geoip_module --with-http_gzip_static_module  --with-http_stub_status_module --with-pcre 

以下几点对我很有用: 因为我的nginx服务器承载了3个应用程序,所以我必须设置

ssl_protocols  TLSv1.1 TLSv1.2;
在每个应用程序中

如果在正在考虑的特定应用程序中指定了此更改,则不会反映此更改。相反,在该服务器上运行的所有应用程序中更改它将是解决方案。在此之后,当与服务器协商TLSv1.0握手时,将收到以下错误

CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 0 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1526041526
    Timeout   : 7200 (sec)
    Verify return code: 0 (ok)
---

打开nginx配置文件(/etc/nginx/nginx.conf),并在http部分添加以下行:

ssl_protocols TLSv1.1 TLSv1.2;
这将对该服务器中的所有应用程序禁用TLS1.0。您可以使用以下openssl命令进行测试:

openssl s_client -connect example.com:443 -tls1
您应该得到如下输出:

CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 0 bytes
---

我读了这篇文章,花了我三个小时。尝试了很多次,但都失败了。@jww-我已经解决了这个问题。浏览器收到默认服务器的证书。谢谢。@WeiYu您是如何解决这个问题的?是否像您所说的那样?实际上,
openssl s\u客户端的输出…
命令报告无法建立连接。但是,如果我将我的网站插入,它会报告TLS 1.0已启用。想法?@RaduMurzea您是否在同一台机器上安装了多台像Nginx和Apache这样的服务器?@idrisjafer谢谢您的回答,我发现了这个问题。显然,我们的服务器和Internet之间有一个代理,它也在管理SSL设置。所以是的。。。