On Dec 5, 2007, at 2:10 PM, Matt Kelley wrote:

I am using OpenLDAP 2.3.39.  I have enabled CRL checking by including
"TLSCRLCheck peer" in my slapd.conf file.  I am having a problem when
CRLs expire.  I find that, after retrieving an updated CRL, I must
restart slapd in order for it to be used.  This seems to be true
whether using TLSCACertificateFile or TLSCACertificatePath.  Is this
expected?  Is there any way to update CRLs (or certificates, for that
matter) without recycling slapd?

Yes, if you're willing to modify OpenSSL.  The modification is small,
and you could just link the modified .o file along with the standard
libraries, as long as you don't get too far out of synch with releases.

We aren't that desperate at my site, though.  We will need to restart
the server for a new CRL to take effect.  But we won't need to do this
to survive CRL expiration, because I modified tls.c:tls_verify_cb()
to support expired CRLs.  The expired CRL still works, and in practice
we don't often modify the CRL in a way that matters to anyone.

For more on the OpenSSL part of this, see
http://rt.openssl.org/Ticket/Display.html?id=1424&user=guest&pass=guest

        Donn Cave, [EMAIL PROTECTED]

*** libraries/libldap/tls.c.orig        Fri Aug 31 16:13:56 2007
--- libraries/libldap/tls.c     Wed Dec  5 16:35:23 2007
***************
*** 2544,2549 ****
--- 2544,2553 ----
                        "TLS certificate verification: Error, %s\n",
                        certerr, 0, 0 );
        }
+       if ( !ok && errnum == X509_V_ERR_CRL_HAS_EXPIRED ) {
+               ok = 1;
+               X509_STORE_CTX_set_error( ctx, 0 );
+       }
        if ( sname )
                CRYPTO_free ( sname );
        if ( iname )

Reply via email to