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.

Reply via email to