1

平台

  • 操作系统:RHEL 5.4
  • Perl:5.8.8
  • OpenSSL:0.9.8e
  • 网络::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,根据文档,它允许使用 SSLv2 或 3。文档中的相关条目是

sslversion => 'sslv2' | 'sslv3' | 'sslv23' | 'tlsv1'

但是,上述方法不起作用。当我将“sslversion”更改为“sslv2”时,脚本就可以工作了。

结论

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

谢谢,

弗雷德。

4

2 回答 2

0

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

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

于 2012-10-19T15:02:08.687 回答
0
  • 你用的是哪个版本的IO::Socket::SSL
  • 你用的是哪个版本的Net::SSLeay

如果您查看 的源代码IO::Socket::SSL,您会看到这sslv23意味着它将使用Net::SSLeay::CTX_new()相当于Net::SSLeay::CTX_v23_new(). SSLv2可能已从您的库的CTX_v23_new实现中删除。

于 2015-04-01T00:12:53.480 回答