【问题标题】:SSL handshake errorSSL 握手错误
【发布时间】:2017-02-11 01:45:18
【问题描述】:

我在我们的一台服务器上遇到了握手问题。我似乎无法弄清楚如何解决这个问题。几天前,我在连接到我们的其他服务器之一时遇到了类似的问题,您可以在this 问题中关注该问题。该问题已解决,但我面临另一个类似的问题。

这是来自错误日志。

DEBUG: .../IO/Socket/SSL.pm:415: connection failed - connect returned 0
DEBUG: .../IO/Socket/SSL.pm:1175: SSL connect attempt failed because of handshake problemserror:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure

我也运行了一个 openssl 命令,这是输出。

-> openssl s_client -connect ABC:443 -CApath XXX
CONNECTED(00000003)
...
31507:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1101:SSL alert number 40
31507:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake failure:s23_lib.c:188:

我在那里看到了 40 号警报。是不是意味着什么?? 服务器是否期望某种客户端证书用于握手?

【问题讨论】:

  • SSL alert number 40 表示服务器不会接受连接,因为没有提供用户证书。您必须使用 -cert 和 -key 参数指定用户证书和私钥。试试openssl s_client -port 443 -CApath /usr/share/ssl/certs/ -host $host -prexit -cert your.client.certificate.cert -key your.private.key.key
  • @ChankeyPathak:警报编号 40 是一般握手失败,可能是任何事情,包括缺少客户端证书。见RFC5246 (TLS 1.2) section A.3 Alert Messages
  • 请添加更多调试信息,即来自openssl s_client -debug .. 的输出、握手的数据包捕获(作为 pcap)或类似信息。当前信息还不够,因为 40 号警报只是一般的握手错误。
  • @ChankeyPathak 传递客户端证书和密钥似乎有效。我没有看到该错误,并且在调试消息结束时,openssl 正在等待我的输入。 (当我针对其他工作站点运行 openssl s_client 时,我看到了相同的行为)。
  • openssl 工作但我的脚本仍然失败并出现同样的错误。对我来说更多的调试。 :( 无论如何,谢谢你们!

标签: perl ssl https openssl


【解决方案1】:

您必须使用-cert-key 参数指定用户证书和私钥。

openssl s_client -port 443 -CApath /usr/share/ssl/certs/ -host $host -prexit -cert your.client.certificate.cert -key your.private.key.key

【讨论】:

    【解决方案2】:

    谈到为什么它在我的脚本中特别失败,我找到了它的原因。

    在回答之前,我将让我的环境有一个上下文

    1. Perl:5.10.1(由 perlbrew 管理的自定义 perl)。所以我没有使用系统 perl 默认提供的模块。
    2. 由 cpanm 管理的模块
    3. 在 Ubuntu 14.04 上运行

    我通过安装 Crypt::SSLeay 模块解决了这个问题。显然 LWP 模块不支持 https 没有这个模块。

    我发现这是在 IO::Socket::SSL 模块中启用调试。

    use IO::Socket qw(debug4);
    

    它可能会在将来帮助某人:)

    编辑:对于某些 SSL 连接,我的脚本仍然失败。根据线程here,看起来openssl版本是罪魁祸首

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-03
    • 2016-08-08
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2014-01-14
    • 1970-01-01
    相关资源
    最近更新 更多