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 ).
Atle.