Net :: LDAP :: Bind中的文件描述符错误

时间:2012-04-17 11:39:51

标签: perl ldap certificate starttls

我正在使用Net :: LDAP建立以下LDAP连接:

my $ldap = Net::LDAP->new( $ldap_host, version => 3 );
my $mesg = $ldap->start_tls(
    verify => 'none',
);

$mesg = $ldap->bind( $dn, password => $ldappass );

这将有效,甚至让我稍后进行查询以检查用户的凭据。 但是,如果我尝试验证服务器证书:

my $ldap = Net::LDAP->new( $ldap_host, version => 3 );
my $mesg = $ldap->start_tls(
    verify => 'require',
    cafile => '/var/certs/Certificate_Bundle.pem'
);

$mesg = $ldap->bind( $dn, password => $ldappass );

它将成功建立连接并验证服务器证书,但在尝试绑定操作时,我得到以下LDAP消息参数:

    'resultCode' => 82,
    'pdu' => '0O`J3cn=foo1,ou=foo2,dc=foo3Passwd',
    'errorMessage' => 'Bad file descriptor'

我很惊讶,因为结果代码82被定义为LDAP_LOCAL_ERROR,但所有证书位似乎都有效。如果我将'cafile'参数更改为错误的值,它将失败并显示'I / O错误连接重置为对等'错误消息。

有什么想法吗?提前谢谢。

更新:我刚刚意识到证书验证没有成功。 LDAP服务器使用的是其他证书,而不是我告诉过的证书。我意识到通过使用openssl来监控握手过程:

openssl s_client -connect *server:port* -showcerts -state

在那里你可以看到服务器正在使用的证书。

0 个答案:

没有答案