Perl Net :: LDAPS SSL版本协商

时间:2012-10-17 09:02:03

标签: perl ssl ldap

平台

  • 操作系统:RHEL 5.4
  • Perl:5.8.8
  • OpenSSL:0.9.8e
  • Net :: LDAP:0.33

详细

我们有一个perl脚本,用于监视应用程序使用的LDAP服务器,如果这些服务器无法以某种方式访问​​或运行,则会发送警报。总的来说,除了仅接受SSLv2的特定LDAP服务器之外,这种方法很有效。 LDAP对象创建如下所示

my $current_server = Net::LDAP->new('ldaps://10.1.1.1:636/,
                     verify => 'none',
                     sslversion => 'sslv23',
                     timeout => 30 )

注意 sslv23 ,根据documentation,允许使用SSLv2或3。文档中的相关条目是

  

sslversion => 'sslv2'| 'sslv3'| 'sslv23'| '的TLSv1'

但是,上述方法无效。当我将“sslversion”更改为“sslv2”时,脚本工作。

结论

如果sslv3不起作用,如何让Net :: LDAPS重试sslv2?

谢谢,

佛瑞德。

2 个答案:

答案 0 :(得分:0)

要回答我自己的问题 - 如果SSLv3失败,我找不到让库回归到SSLv2的方法,所以我在我自己的代码中通过首先尝试SSLv3来实现,如果失败,则使用SSLv2。这适用于我的具体情况。

我鼓励任何有更多信息的人发表评论。

答案 1 :(得分:0)

  • 您使用的是哪个版本的IO::Socket::SSL
  • 您使用的是哪个版本的Net::SSLeay

如果您查看source code for IO::Socket::SSL,您会看到sslv23表示它将使用Net::SSLeay::CTX_new(),相当于Net::SSLeay::CTX_v23_new()SSLv2可能已从您的图书馆CTX_v23_new实施中删除。