> On 17 May 2015, at 16:10, Natxo Asenjo <natxo.ase...@gmail.com> wrote:
> 
> hi,
> 
> connecting to a freeipa ldap host (that uses the 389 directory server under 
> the hood) I can successfully retrieve certificates belonging to hosts.
> 
> I can then use Crypt::X509 to extract info from that. But how could I get the 
> fingerprints? If I use the apache directory studio ldap client I can see the 
> md5 and sha1 fingerprints of the attribute but I seem uncapable of getting it 
> using my script.
> 
> my $ldap = Net::LDAP->new( $server ) or die "$@";
> 
> my $mesg = $ldap->start_tls(
>     verify => 'require',
>     sslversion => 'tlsv1',
> );
> 
> $mesg = $ldap->bind (
>     "testuser",
>      password    => 'pwd',
>      version     => 3,
> );
> 
> my $search = $ldap->search(
>                         base    => $base,
>                         scope   => 'sub',
>                         filter  => '(objectclass=*)',
>                         attr    => ['usercertificate'],
>                     );
> 
> 
> for my $entry ( $search->entries) {
>     my $cert =  $entry->get_value( 'usercertificate' );;
>     my $decoded = Crypt::X509->new ( cert => $cert );
>     if ( $decoded->error ) {
>         warn "Error parsing certificate: ", $decoded->error;
>     }
>     print "Subject: " . $decoded->subject_cn, "\n"; 
>     print "notafter: " . gmtime( $decoded->not_after) , "\n";
> }
> 
> So this works, but I see no method to get the fingerprint. Is there a way to 
> get it from the info I get from ldap?

This code uses Net::SSLeay to extract a fingerprint from something like your 
$cert.

http://cpansearch.perl.org/src/MIKEM/Net-SSLeay-1.46/examples/x509_cert_details.pl

Chris

Reply via email to