Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
None
-
Froyo
-
3
-
Froyo - 7/28/2021, Froyo - 8/11/2021
-
Customer Feedback
-
Major
-
2 - 5-25% of Customers
-
4 - Major
-
5 - $$$$$$
-
This is causing problems with a number of very large scale customers. The way the CRL is handled is very inefficient.
-
16,000
-
Bug Fix
-
Previously the Puppet CA would add duplicate CRL entries. After the fix, we prevent duplicate entries and thus keep the CRL smaller.
-
Needs Assessment
Description
Using the 'puppet node purge' command it is possible to put duplicate revoked certificates in Puppet's CRL. For example:
# puppet cert generate testcert
|
Notice: testcert has a waiting certificate request
|
Notice: Signed certificate request for testcert
|
Now purge the node / certificate:
puppet node purge testcert
|
Notice: Revoked certificate with serial 650
|
Notice: Removing file Puppet::SSL::Certificate testcert at '/etc/puppetlabs/puppet/ssl/ca/signed/testcert.pem'
|
Notice: Removing file Puppet::SSL::Certificate testcert at '/etc/puppetlabs/puppet/ssl/certs/testcert.pem'
|
Notice: Removing file Puppet::SSL::Key testcert at '/etc/puppetlabs/puppet/ssl/private_keys/testcert.pem'
|
Node "testcert" was purged.
|
But if we purge it again...
puppet node purge testcert
|
Notice: Revoked certificate with serial 650
|
You can see that additional lines are added by looking at the output before / after the purge:
openssl crl -in ca_crl.pem -noout -text | grep Serial | wc -l
|
I suspect that PUP-2189 might contribute to this. I also suspect that the larger a CRL file gets the more likely it is to become corrupted, as it takes longer to hold open the file and add a long list of redundant serial numbers.
Outcomes
- Attempting to revoke a cert whose serial number is already in the CRL should be a no-op.
- Include an output message when the above is attempted (probably INFO level).
Implementation notes
- want to check the performance when making sure we're not adding a duplicate serial. This is especially important for the batch revoke endpoint, to make sure it doesn't get super slow when revoking a lot of certs at once (the whole point of that endpoint was to be fast).
Attachments
Issue Links
- relates to
-
SERVER-2740 Prune duplicate entries from CRL
-
- Resolved
-