Issue #3168 has been updated by James Turnbull. Assignee deleted (Jesse Wolfe) Keywords set to CRL
---------------------------------------- Bug #3168: Cannot disable use of CRL in puppetd https://projects.puppetlabs.com/issues/3168 Author: Nicholas Veeser Status: Investigating Priority: Normal Assignee: Category: SSL Target version: Affected Puppet version: 0.25.3 Keywords: CRL Branch: Upgrading from 0.24.8 -> 0.25.3 I am using puppet as a CA, but only manually, using puppetca client. There is no puppetmasterd process currently acting as the CA. (though I cannot seem to turn it off. see: http://projects.reductivelabs.com/issues/3141) Here is the behavior as I understand it. Puppet::SSL::Host.ssl_store sets up the SSL context for the host and has this: def ssl_store... ... # If there's a CRL, add it to our store. if crl = Puppet::SSL::CertificateRevocationList.find("ca") Puppet.debug "found crl" @ssl_store.flags = OpenSSL::X509::V_FLAG_CRL_CHECK_ALL|OpenSSL::X509::V_FLAG_CRL_CHECK @ssl_store.add_crl(crl.content) end .... Puppetd runs with Puppet::SSL::Host.ca_location = :remote. This sets 'CertificateRevocationList' to have a cache set to a :file terminus and main terminus set to :rest So when looking for a CRL, it will - first look for a file (which is the "cache") - then look in REST. - If found via REST, cache in file This will look at the :ca_server (or :server) for the CRL. Due to http://projects.reductivelabs.com/issues/3141, my 0.25.3 puppetmasterd will run as a CA no matter what. So each puppetmaster will create an empty CRL (issued by itself), and return it. The client will cache the CRL, and try to use that. Since it is not issued by the same CA Cert as the host identity Certs, then all cert verification will fail. Even if I get a ca_crl from the Puppet CA, which has the correct issuer line for the Signing cert, I cannot seem to get any CRL to work. If it finds a CRL, and passes it to OpenSSL, the verify fails. (the current error, after much wrangling, is (3) X509_V_ERR_UNABLE_TO_GET_CRL: unable to get certificate CRL) This maybe because my cert chain is longer that 1 (0,1), but is actually 4 certs (0,1,2,3). I assume that OpenSSL is failing at trying to find a CRL for every signing cert in the chain. *Workaround* Set ca_server to some host that is not running as a puppetmaster. Results in: err: /File[/var/lib/puppet/lib]: Failed to generate additional resources using 'eval_generate': Connection refused - connect(2) But at least the CRL is empty. *Summary* There seems to be no way for the puppetd client (Configurer?) to distinguish between: - The CRL is unavailable due to error, Certificates cannot be verified. - The CRL does not exist, don't try to use one. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://projects.puppetlabs.com/my/account -- You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en.
