On Mon, 22 Jun 2015, Doug Leavitt wrote:
[...]
The code change itself is simple. At a minimum it is as simple as adding:
#ifdef X509_V_FLAG_PARTIAL_CHAIN
Perhaps with a doc patch too, since this would make OpenLDAP one of (apparently very) few OpenSSL-linked applications that honors partial chains.
OpenSSL by default ignores trust-list entries that are not for root CAs. Adding just the "mysystem" certificate has no effect. With this change, you can add the "mysystem" certificate and that will cause OpenSSL to accept this certificate, even though the trust list does not include the CA's root certificate.
The comment "even though the trust list does not include the CA's root certificate" seems a bit odd to me:
An argument that we take today's behavior (require rootCA; mysystemA[rootCA] or mysystemB[rootCA] are both OK) and make it more strict with "require rootCA AND mysystemA[rootCA]" intuitively sounds like an increase in security...if you have a client environment controlled enough to distribute ldap.example.com's material along with your CA store, go for it.
But the concept of "require ldap.example.com" while (optionally?) throwing out the existing rootCA (and presumably its associated CRL/OCSP/etc.) checking sounds like it could introduce risk. So is ldap.example.com truly an "add" to the chain, or is the rootCA not included (i.e. removed)?