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 在https协议中请求nginx服务器时握手失败_Ssl_Nginx_Https - Fatal编程技术网

Ssl 在https协议中请求nginx服务器时握手失败

Ssl 在https协议中请求nginx服务器时握手失败,ssl,nginx,https,Ssl,Nginx,Https,我遇到了https请求的问题。问题是,我正在配置nginx服务器以接受来自windows计算机上应用程序的https请求,但未能连接到服务器。以下是有关wireshark的一些信息: Windows应用程序请求: 来自服务器1的响应: 另一个server2响应: 服务器上的nginx版本为1.12.2,openssl版本为1.0.1f。Nginx配置如下: ssl_certificate /etc/nginx/cert/cert.pem; ssl_certificate_key /etc/

我遇到了https请求的问题。问题是,我正在配置nginx服务器以接受来自windows计算机上应用程序的https请求,但未能连接到服务器。以下是有关wireshark的一些信息:

Windows应用程序请求:

来自服务器1的响应:

另一个server2响应:

服务器上的nginx版本为1.12.2,openssl版本为1.0.1f。Nginx配置如下:

ssl_certificate /etc/nginx/cert/cert.pem;
ssl_certificate_key /etc/nginx/cert/cert.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
有关服务器1的信息,请访问:

因为我在服务器TLSv1.0中找不到任何客户端的密码套件,如“TLS_RSA_WITH_3DES_EDE_CBC_SHA”。我想知道是语言或软件之间的差异导致了问题的发生

顺便说一下,除了关于server2的请求url之外,我没有其他信息,我的目标是部署server1来接受来自windows客户端的请求


有谁能提出一些解决问题的建议或提供一些线索吗?非常感谢

我终于找到了问题的原因。出现此问题是因为nginx 1.12.2默认情况下不支持周ssl密码。而构建在不同版本的windows操作系统(如XP)上的客户端应用程序提供了有限的密码套件,如
TLS\u RSA\u WITH_3DES\u EDE\u CBC\u SHA
TLS\u DHE\u DSS\u WITH_3DES\u EDE\u CBC\u SHA
。这些密码套件的安全性很差。IE8浏览器中也出现了同样的问题。IE8有时无法访问更新的网站

我的解决方案是使用一些额外的参数重新编译nginx:

安装依赖项
sudo-apt-get-install-build-essential-libpcre3-libpcre3-dev-zlib1g-dev-unzip-git

下载nginx
wget-chttps://nginx.org/download/nginx-1.12.2.tar.gz
tar zxf nginx-1.12.2.tar.gz

检查openssl版本
dpkg-s openssl

检查3DES的openssl支持
openssl密码-v“3DES”

下载openssl源代码openssl>=1.1.0默认情况下不支持3DES
wget-O openssl.zip-chttps://github.com/openssl/openssl/archive/OpenSSL_1_0_1f.zip
解压缩openssl.zip
mv openssl-openssl_1_0_1f/openssl

编译并安装nginx
cd nginx-1.12.2
./configure--with-openssl=../openssl--with-http\u ssl\u模块--with-openssl opt='enable-weak-ssl-ciphers'
制作
sudo make安装

通过一些ssl配置,服务器能够支持带有3DES密码套件的https请求


谢谢

我发现这个工具非常有助于找到正确的cipers配置,为我希望支持的目标客户机提供支持。希望这能有所帮助(1)是真正的OpenSSL 1.0.1f,还是您使用的发行版(如RHEL/CentOS/Oracle/SL或Debian/Ubuntu/Mint)或类似版本从上游版本(如1.0.1f)开始,可能会改变构建设置(如RH过去删除的EC),并添加后端口安全补丁?(2) 您尝试链接到SSLLAB时未显示任何有关服务器的信息。对于错误链接到SSLLAB表示感谢和抱歉。我从上面没有显示的我的服务器域的链接中获得了信息,我应该显示它的屏幕截图。我使用命令
OpenSSL version
获得了OpenSSL版本信息,它显示了
OpenSSL 1.0.1f 2014年1月6日
。Linux分区是Ubuntu 14.04.5 LTS@戴夫·汤普森谢谢你的建议。我在我的服务器上找到了有用的nginx配置。但让我困惑的是,我找不到任何密码套件可以匹配客户端的密码规范。我找到了
TLS\u RSA\u和\u 3DES\u EDE\u CBC\u SHA
,而且似乎在OpenSSL列中没有相应的信息。我想知道服务器如何使用该密码套件处理请求@LucaT.(1)在Ubuntu
openssl版本上
只显示上游版本;要获得实际的补丁版本,请使用
apt*
工具或
dpkg-s openssl
。但在检查launchpad时,我没有看到任何最近的补丁会影响这一点。(2) 上游OpenSSL以DES-CBC3-SHA的名义明确实现了该套件,尽管一些版本由于最近的生日问题(32)而禁用了它;我不知道为什么Mozilla网站上没有密码,但请查看密码手册(1)或运行
openssl密码[-v]
。如果系统上的nginx日志中出现任何无法工作的内容,该怎么办?