我希望有人可以提供帮助,我使用的是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
它可以从国际劳工组织返回页面。
我想告诉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
提前致谢
答案 0 :(得分:3)
我想告诉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)。
答案 1 :(得分:0)
当连接到仅支持SSLv2的服务器时,Net :: LDAP(也使用IO :: Socket :: SSL)会发生相同的错误。
IO :: Socket :: SSL默认根据手册页“在SSLv2和SSLv3之间自动协商”,因此省略SSL_version可使脚本与较旧的服务器一起使用。
或者,更乐观的是,当管理员四处升级服务器时,脚本仍然可以工作!