I am at a loss trying to figure out why my perl script wont talk TLS or SSL.

Firstly the versions.

openldap 2-1.25
Net::LDAP: 0.26
IO:Socket:SSL 1.26
Perl v5.6.1

Secondly, the code.

----------------------------------------------------------------------------
-------
# Setup the LDAP connection.
$ldap = Net::LDAP->new ( "$ldap_server",
    port => '389',
    version => 3 ) or gracefuldie("$@");

$ldap->debug(15);

$ldap_mesg = $ldap->start_tls (verify => 'none',
    sslversion=>'sslv3');
if ($ldap_mesg->code)
{
 # There was an LDAP error.
 logprint (0, "Error trying to enable TLS.\n");
 logprint (0, "code: " . $ldap_mesg->code . "\n");
 logprint (0, "done: " . $ldap_mesg->done . "\n");
 logprint (0, "error: " . $ldap_mesg->error . "\n");
 logprint (0, "is_error: " . $ldap_mesg->is_error . "\n");
 gracefuldie ("(" . $ldap_mesg->code . "): " . $ldap_mesg->error);
}

$ldap_mesg = $ldap->bind ( $ldap_bind,
    password => $ldap_pass,
    version => 3 );      # use for changes/edits


if ($ldap_mesg->code)
{
 # There was an LDAP error.
 logprint (0, "Error trying to bind.\n");
 logprint (0, "code: " . $ldap_mesg->code . "\n");
 logprint (0, "done: " . $ldap_mesg->done . "\n");
 logprint (0, "error: " . $ldap_mesg->error . "\n");
 logprint (0, "is_error: " . $ldap_mesg->is_error . "\n");
 gracefuldie ("(" . $ldap_mesg->code . "): " . $ldap_mesg->error);
}
----------------------------------------------------------------------------
-------

I have told openldap to force TLS with the "security tls = 56"  line in
slapd.conf
Here is the output form the script.

----------------------------------------------------------------------------
-------
Net::LDAP=HASH(0x80fbb3c) sending:

30 1D 02 01 01 77 18 80 16 31 2E 33 2E 36 2E 31 0....w...1.3.6.1
2E 34 2E 31 2E 31 34 36 36 2E 32 30 30 33 37 __ .4.1.1466.20037

0000   29: SEQUENCE {
0002    1:   INTEGER = 1
0005   24:   [APPLICATION 23] {
0007   22:     [CONTEXT 0]
0009     :       31 2E 33 2E 36 2E 31 2E 34 2E 31 2E 31 34 36 36
1.3.6.1.4.1.1466
0019     :       2E 32 30 30 33 37 __ __ __ __ __ __ __ __ __ __ .20037
001F     :   }
001F     : }
Net::LDAP=HASH(0x80fbb3c) received:

30 0C 02 01 01 78 07 0A 01 00 04 00 04 00 __ __ 0....x........

0000   12: SEQUENCE {
0002    1:   INTEGER = 1
0005    7:   [APPLICATION 24] {
0007    1:     ENUM = 0
000A    0:     STRING = ''
000C    0:     STRING = ''
000E     :   }
000E     : }
0: (Wed Mar 31 10:58:16 2004) Error trying to enable TLS.
0: (Wed Mar 31 10:58:16 2004) code: 1
0: (Wed Mar 31 10:58:16 2004) done: 1
0: (Wed Mar 31 10:58:16 2004) error: Operations error
0: (Wed Mar 31 10:58:16 2004) is_error: 1
FATAL ERROR: (1): Operations error
----------------------------------------------------------------------------
-------

It seems to be failing at the start_tls call, but I cant understand why.

ldapsearch -ZZ -x -D <my bind> -h <my fqdn> -w <my pass> -b <my basedn>
"(ObjectClass=*)" "description"

This call works fine so I know the TLS is working ok.
I could try SSL but I think there is something wrong with the IO:Socket:SSL
package, since it does not work either.

I really dont know what else to try, I hope that someone has an idea.
-D

Reply via email to