OpenSSL连接错误SSL23\u GET\u SERVER\u您好,但浏览器和curl可以正常工作

OpenSSL连接错误SSL23\u GET\u SERVER\u您好,但浏览器和curl可以正常工作,ssl,openssl,Ssl,Openssl,我正在处理一个问题,由于openssl无法完成握手,python无法通过ssl连接到特定服务器。Curl和我的浏览器工作。我尝试了两个不同的openssl版本和,但似乎无法连接 以下是我在以下两个平台上尝试的内容。输出在OpenSSL 1.0.1e上的打印略有不同,但仍然是相同的错误 Mac OSX Yosemite - OpenSSL 0.9.8zg 14 July 2015 Debian GNU/Linux 7 (wheezy) - OpenSSL 1.0.1e 11 Feb 2013 不

我正在处理一个问题,由于openssl无法完成握手,python无法通过ssl连接到特定服务器。Curl和我的浏览器工作。我尝试了两个不同的openssl版本和,但似乎无法连接

以下是我在以下两个平台上尝试的内容。输出在OpenSSL 1.0.1e上的打印略有不同,但仍然是相同的错误

Mac OSX Yosemite - OpenSSL 0.9.8zg 14 July 2015
Debian GNU/Linux 7 (wheezy) - OpenSSL 1.0.1e 11 Feb 2013
不指定的版本

openssl s_client -connect www.uk-recruitment.net:443
openssl s_client -connect www.uk-recruitment.net:443 -cipher 'DEFAULT:!ECDH'
openssl s_client -connect www.uk-recruitment.net:443 -CAfile cacert.pem
openssl s_client -connect www.uk-recruitment.net:443 -CAfile cacert.pem -cipher 'DEFAULT:!ECDH'
openssl s_client -connect www.uk-recruitment.net:443 -CAfile cacert.pem -cipher 'DEFAULT:!ECDH' -servername uk-recruitment.net
但我总是得到同样的结果

CONNECTED(00000003)
66716:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/ssl/s23_clnt.c:593: 
如果我使用所有相同的选项添加
-tls1
-tls1_1
-tls1_2
,我会得到一个稍微不同的错误:

openssl s_client -connect www.uk-recruitment.net:443 -tls1
CONNECTED(00000003)
66750:error:14094438:SSL routines:SSL3_READ_BYTES:tlsv1 alert internal error:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/ssl/s3_pkt.c:1145:SSL alert number 80
66750:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:/SourceCache/OpenSSL098/OpenSSL098-52.40.1/src/ssl/s3_pkt.c:566:
站点需要SSL握手,不使用SNI将导致失败:

$ openssl s_client -connect www.uk-recruitment.net:443
CONNECTED(00000003)
139999237719712:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error:s23_clnt.c:770:
与SNI相比,它看起来更好:

$ openssl s_client -connect www.uk-recruitment.net:443 -servername www.uk-recruitment.net
CONNECTED(00000003)
...
   Cipher    : ECDHE-ECDSA-AES128-GCM-SHA256

可能是OpenSSL 0.9.8不提供
-servername
选项,但OpenSSL 1.0.1应该提供该选项。

谢谢,该标志在0.9.8上显示为可用,但仍然给出了相同的错误(带有www前缀和not),因此我假设它不是修复程序。在1.0.1上试用有效。根据SSLLAB,它们在cloudflare上,需要SNI、最小TLSv1.0和ECDHE-ECDSA密钥交换,测试表明它们还需要“新式”Hello(不兼容SSLv2),这是0.9.8的默认设置。带有
-servername
的1.0.0可以工作,但1.0.1或1.0.2更好,因为它们实现了TLSv1.2和GCM。0.9.8可以使用
-tls1-密码ECCdraft:HIGH:!aNULL-servername
,但这越来越麻烦了。Stack Overflow是一个解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。也。