SSL例程:SSL23_WRITE:ssl握手失败


32

我正在尝试使用OpenSSL连接到SSL服务器。

当我跑步时:

openssl s_client -connect myhost.com:443

以下SSL客户端配置可以正常工作:

  • Windows(OpenSSL 0.9.83e 23 Feb 2007
  • Linux(OpenSSL 0.9.8o 01 Jun 2010
  • Linux(OpenSSL 1.0.0-fips 29 Mar 2010

任何成功连接的输出如下所示:

New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DES-CBC3-SHA
    Session-ID: (hidden)
    Session-ID-ctx:
    Master-Key: (hidden)
    Key-Arg   : None
    Krb5 Principal: None
    PSK identity: None
    PSK identity hint: None
    Start Time: 1337266099
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

但是,当我将客户端与Ubuntu 12.04(w / OpenSSL 1.0.1 14 Mar 2012)一起使用时,出现错误:

CONNECTED(00000003)
...:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:177:

我该如何解决呢?

所有提示,不胜感激!


从Windows连接时使用什么协议和密码?
Shane Madden

它说:New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA。我希望我理解这一切的含义!:)
Jaakko

DES?具有最高优先级的密码很奇怪。您要连接到哪种服务器?
Shane Madden

1
也许默认情况下,较新的openssl的默认设置是限制较旧的ssl协议版本?鉴于最近的BEAST混乱,这样做有某些理由。
rackandboneman

1
德,明白了。您正在针对您的站点测试客户端。
布伦特

Answers:


28

这似乎是Ubuntu 1.0.1 OpenSSL的一个已知问题:https : //bugs.launchpad.net/ubuntu/+source/openssl/+bug/965371

看起来没有可用的修复程序。如果可能,您可以降级为1.0.0。

尝试 openssl s_client -tls1 -connect myhost.com:443


关于Debian票证问题的更多详细信息:bugs.debian.org/cgi-bin/bugreport.cgi?bug=665452
布伦特(

附言:当赏金期满(19小时)时,我会给您赏金
Jaakko

1
听起来不错:)最后一块信息,与OpenSSL的上游票,这似乎是问题的根源:rt.openssl.org/Ticket/...
布伦特

谢谢!此答案也适用于Mac上的OpenSSL 0.9.8zh 2016年1月14日
tytk

4

当无法重新协商密码时,此错误可能是由opensl的​​较旧版本引起的(我使用椭圆曲线生成了自签名证书)。

具体来说,我在默认的openssl的MacOS上遇到了相同的错误-0.9.8zh

安装brew版本OpenSSL 1.0.2f之后,错误消失了:

~/bin/openssl s_client -connect localhost:45678 | grep Cipher

verify return:1
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES256-GCM-SHA384
    Cipher    : ECDHE-ECDSA-AES256-GCM-SHA384

进行brew安装后,/ usr / bin / openssl中的openssl版本是旧版本。我必须专门转到/usr/local/Cellar/openssl/1.0.2o_2/bin以运行最新版本的openssl
Gopi Palamalai

2

如果您在OpenJDK上运行的Java HTTPS服务器遇到此问题,请尝试编辑/etc/java-7-openjdk/security/java.security并注释掉该行

security.provider.10=sun.security.pkcs11.SunPKCS11 ${java.home}/lib/security/nss.cfg

Christoph W.发现。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.