[英]SSL handshake error
我遇到了其中一台服务器的握手问题。 我似乎无法弄清楚如何解决这个问题。 几天前,在连接到其他服务器之一时,我遇到了类似的问题,您可以在此问题中关注。 该问题已解决,但我正面临着另一个类似的问题。
这来自错误日志。
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号警报。 它表示什么吗? 服务器是否期望某种客户端证书进行握手?
你必须指定用户证书,并与私钥-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
谈到为什么它在我的脚本中特别失败,我找到了原因。
在回答这个问题之前,我将征求我的环境的背景信息
- Perl:5.10.1(由perlbrew管理的自定义perl)。 因此,我没有使用系统perl默认提供的模块。
- 由cpanm管理的模块
- 在Ubuntu 14.04上运行
我通过安装Crypt :: SSLeay模块来解决它。 没有该模块,显然LWP模块不支持https。
我发现这是在IO :: Socket :: SSL模块中启用调试功能。
use IO::Socket qw(debug4);
将来可能会对某人有所帮助:)
编辑:我的脚本仍然无法进行某些SSL连接。 看起来openssl版本是根据这里线程的罪魁祸首
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.