由于握手问题,PerL SSL连接尝试失败。

4


我希望有人能帮助我,我正在使用nagios插件check_ilo2_health,在我们的OpenSuSE系统上该插件运行良好,但新的Ubuntu 14.04系统存在问题。移除nagios相关内容并运行perl,如下所示:

perl -e 'use IO::Socket::SSL qw(debug3);IO::Socket::SSL->new(SSL_hostname => "", PeerAddr=>"10.0.0.1:443",  Proto=>"tcp",SSL_verify_mode => SSL_VERIFY_NONE)or die $!'

我正在连接到一个带有自签名证书的HP ILO2系统,但是收到了以下回复:

DEBUG: .../IO/Socket/SSL.pm:2503: new ctx 19182624
DEBUG: .../IO/Socket/SSL.pm:526: socket not yet connected
DEBUG: .../IO/Socket/SSL.pm:528: socket connected
DEBUG: .../IO/Socket/SSL.pm:550: ssl handshake not started
DEBUG: .../IO/Socket/SSL.pm:586: not using SNI because hostname is unknown
DEBUG: .../IO/Socket/SSL.pm:647: Net::SSLeay::connect -> 0
DEBUG: .../IO/Socket/SSL.pm:695: connection failed - connect returned 0
DEBUG: .../IO/Socket/SSL.pm:1757: SSL connect attempt failed because of handshake problems
DEBUG: .../IO/Socket/SSL.pm:2537: free ctx 19182624 open=19182624
DEBUG: .../IO/Socket/SSL.pm:2549: OK free ctx 19182624
IO::Socket::SSL: SSL connect attempt failed because of handshake problems error:140943FC:SSL routines:SSL3_READ_BYTES:sslv3 alert bad record mac        ...propagated at -e line 1.

如果我在curl中运行它:

curl "https://10.0.0.1" --insecure

从ILO返回页面有效。

由于这是一个监控系统,许多服务器使用自签名证书,因此我希望告诉Perl或OpenSSL忽略任何证书问题。

有什么好的解决方法吗?

版本:

Perl Version: This is perl 5, version 18, subversion 2 (v5.18.2) built for x86_64-linux-gnu-thread-multi
Crypt::SSLeay   0.72
IO::Socket::SSL 1.997
Net::SSLeay     1.66

感谢您预先的支持。
2个回答

4
我希望告诉perl或openSSL忽略证书问题,因为这是一个监控系统,许多服务器使用自签名证书。
您正在正确地执行此操作,即使用SSL_VERIFY_NONE的SSL_verify_mode。
IO :: Socket :: SSL:SSL连接尝试失败,因为握手问题错误:140943FC:SSL例程:SSL3_READ_BYTES:sslv3警报坏记录mac......在-e线1传播。
奇怪,但我看到其他关于“HP ILO2”和bad_record_mac的报告。尝试将版本降级到SSL 3.0,例如 SSL_version =>“SSLv3”。
但由于POODLE的问题,SSL 3.0不是令人满意的解决方案,因此我有兴趣查看来自curl的工作SSL握手(上传到cloudshark.org)。

我在一个安全网络上,所以无法使用Cloudshark,但是那确实解决了问题,谢谢。看着Curl,它也使用SSL3握手,然后使用DHE-RSA-AES256-SHA创建连接。 - trevrobwhite

0

当使用IO::Socket::SSL连接到仅支持SSLv2的服务器时,Net::LDAP(也使用IO::Socket::SSL)会发生相同的错误。

根据man页面,IO::Socket::SSL默认情况下“自动协商SSLv2和SSLv3”,因此省略SSL_version允许脚本与旧服务器一起工作。

或者更乐观地说,当管理员开始升级服务器时,脚本仍将继续工作!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接