Hi Atle,
in my case I am certificate agency (self-signed certificate) and I
issue "private key" and "certificate" (cacert.pem) as for root "CA" as
for LDAP server (server-key.pem and server-cert.pem) and LDAP perl
script client (client-key.pem and client-cert.pem).
The script and client run on the same computer (for the moment) and
LDAP server private key (private/server-key.pem) and certificate
(certs/server-cert.pem) located in /etc/ssl/ directory. CA root
certificate (certs/cacert.pem) is located in /etc/ssl/certs directory
-- and as recommended I created certificate named using hash value
URL: https://metacpan.org/pod/Net::LDAP#start_tls
|ln -s cacert.pem `openssl x509 -hash -noout < cacert.pem`.0
Client (perl script) has reference to client's key/cert in the script
which is stored in sub-directory 'certs' where located the script
(certs/client-key.pem and certs/client-cert.pem).
At the moment I am not fully grasp why verification of server
certificate fails.
I am welcome any ideas how to fix it.
NOTE: It is my first attempt to program with Net::LDAP and start_tls
-- I am in process of learning how it works and how to program to use
LDAP over TLS in perl.
Thanks for any input,
Andrew
|
On 4/13/2014 12:43 PM, Atle Solbakken wrote:
If I made a change in "start_tls" command for option "verify =>
none" to one of 'optional' or 'required' then I get next error message
root@install:~/prog# ./ldap_sec.pl
SSL connect attempt failed with unknown error error:14090086:SSL
routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at
./ldap_sec.pl line 25, <DATA> line 751.
root@install:~/prog#
It seems to me that the "verify"-option tells Net::LDAP whether it
should verify that the certificate the server you are connecting to
is using has been signed by a known certificate authority (listed in
/etc/ssl/certs).
start_tls will fail if the server does not provide any certificate,
or if the certificate is not signed by a CA (ref
http://search.cpan.org/~marschap/perl-ldap/lib/Net/LDAP.pod ).