[Freeipa-devel] [PATCH] 1079 address CA subsystem renewal issues

Petr Viktorin pviktori at redhat.com
Mon Jan 7 12:35:01 UTC 2013


On 01/06/2013 09:00 PM, Rob Crittenden wrote:
> Each of the CA subsystem certificates would trigger a restart during
> renewal. This generally caused one or more of the renewals to fail due
> to the CA being down.
>
> We also need to fix the trust on the audit cert post-installation. It
> was possible that both certmonger and certutil could have the NSS
> database open read/write which is almost guaranteed to result in
> corruption.
>
> So intead I picked the audit cert as the "lead" cert. It will handle
> restarting the CA.
>
> It will also wait until all the other CA subsystem certs are in a
> MONITORING state before trying to update the trust. This should prevent
> the multiple read/write problem.
>
> The CA wasn't actually working post-renewal anyway because the user it
> uses to bind to DS wasn't being updated properly. certmap.conf is
> confiugred to compare the cert provided by the client with that stored
> in LDAP and since we weren't updating it, dogtag couldn't properly bind
> to its own DS instance.
>
> We also update a ou=People entry for the RA agent cert so I pulled that
> updating code into cainstance.py for easier sharing.
>
> Finally, the wrong service name was being used for tomcat to do the
> restart. This is fixed. I've tested this with 3.1/dogtag 10 but it
> should work with dogtag 9 as well (which uses a different service naming
> convention).
>
> This is how I test:
>
> - ipa-server-install ...
> - getcert list | grep expires
> - examine the first four certs, pick an expiration date ~28 days prior
> - date MMDDhhmmCCYY
> - getcert list|grep status
>
> Wait until all but one is in MONITORING. That last one should be the
> audit cert.
>
> I usually at this point switch to watching a tail of /var/log/messages
> until the CA restarts.
>
> Confirm that things are working with:
>
> - ipa cert-show 1
>
> To really be sure, use the ipa cert-request command to issue a new cert.
>
> Ideally you'll verify that things are working, then trigger another
> renewal event. Do the getcert list|grep expires to renew the HTTP/DS
> server certs, then do this again for the CA subsystem certs.
>
> It should come up again.
>
> rob
>

Works for me, but I have some questions (this is an area I know little 
about).

Can we be 100% sure these certs are always renewed together? Is 
certmonger the only possible mechanism to update them?

Can we be sure certmonger always does the updates in parallel? If it 
managed to update the audit cert before starting on the others, we'd get 
no CA restart for the others.

And anyway, why does certmonger do renewals in parallel? It seems that 
if it did one at a time, always waiting until the post-renew script is 
done, this patch wouldn't be necessary.

-- 
Petr³




More information about the Freeipa-devel mailing list