Re: SSL/TLS does not check hostname in cert

Prentice Bisbal <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.ldap
Message-ID <[email protected]>

Chris Ridd wrote:
> On 31 Mar 2010, at 19:25, Prentice Bisbal wrote:
> 
>> It's my understanding that using LDAPS->new or $ldap->start_tls with the
>> option
>>
>> verify => 'require'
>>
>> Should verify that the host name should be checked and fail if it's not
>> an exact match. From my experience with websites, TLS/SSL requires that
>> if the cert contains the FQDN for the server, the verification will fail
>> if the name in the web-browsers address doesn't also have the FQDN.
>>
>> I wrote a program using the code below. The cert for the LDAP server has
>> the FQDN (ldap1.domain.tld), however when I call the program with
>> hostname specified as "ldap1", I do not get any kind of verification
>> error. ldap1 doesn't not allow any unencrypted traffic at all, so I know
>> I must be connecting over SSL/TLS or I would have gotten a
>> "confidentiality required" error from the server.
>>
>> NOTE: In my previous e-mail, I left out a section of the code. This
>> e-mail includes all the code. Sorry for the screw-up:
>>
>> It's my understanding that using LDAPS->new or $ldap->start_tls with the
>> option
>>
>> verify => 'require'
>>
>> Should verify that the host name should be checked and fail if it's not
>> an exact match.
> 
> No, all it means is that the certificate chain is trusted, ie is signed by a CA that you trust.
> 
> The rules for checking the hostname matches are more complex than you describe, but luckily it seems that IO::Socket::SSL has a verify_hostname method that should do what is needed. eg:
> 
> $ldap = Net::LDAP->new("hostname") or die;
> [...start_tls etc...]
> $ldap->socket->verify_hostname("hostname", "ldap") || die "Hostname verification error";
> 
> We should either document this, or (my preference) add code to call verify_hostname ourselves.
> 
> Cheers,
> 
> Chris
> 
> 

Thanks for the clarification. That's exactly what I was looking for.

I'm going to add that verify_hostname call to my code.


-- 
Prentice
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.