Hey there puppet-users deinzens.

One of my puppet agents helpfully reminded me that my root CA cert is due to expire within a few months, and I'm wondering what the best way to go about rolling it over would be.

A lot of my reading suggests something like "burn everything involving certificates to the ground and start your entire CA infrastructure over from scorched earth" is an approximation of the way to go.

From the various looks and reading I've done, this was one of those parts
of puppet that had some serious technical debt involved in authoring it.

I've likened puppet's SSL config to how I might manage an SSL cert on my webserver/clients, and I'm seeing a disconnect, since many of the things I'd do in those cases don't work here..

In short -- I think the following problems still exist:

* There's still no support for putting multiple certificate files as the puppet CA -- all must still be signed by a common root entity. Is this correct? (In the "web" analogy, my browser could have lots of built-in and additional trust-points, both corporate and as-shipped).

* There's no directive I can find whereby puppet agents can, within N days of expiry, re-request their certificate, while maintaining a valid one in the meantime. On the puppet master, a duplicate cert is treated as an absolute error and must be purged from both sides with extreme prejudice and started over.

* There's no way the puppet master itself can have multiple trust points. (I.e. old CA and new CA) -- in the real world, of course, I can have multiple CA files from which I can trust clients, for example, for SMTP auth.

* Puppet has no concept of a CA Path, rather than a CA file. And since certificates are multi-line blocks in text files, they're a real pain to manipulate with Augeas or shell scripts.

* There's no way the master can say "multiple public keys for the same cert are bad, but we will re-sign *existing* keys that are merely near expiry." (Which is a thing we might do in PGP). And even if we could define such a policy, there's no support in the agent to do such a thing.

* There's no way to have the puppet-master auto-sign a cert, based on the presence of some sort of file or hash on the node, similar to the above.

* We blindly trust the first CA we get (using the default options), but then have NO real method for accepting a second CA without manually manipulating the CA files directly. (DANE, anyone?)

* Your old CA, Puppet Master Certs, and Client Certs, are all an ecosystem, and there's no way to replace any one of them without having to replace the whole thing.

Am I getting this wrong?  Please tell me I am.

-Dan

--

--------Dan Mahoney--------
Techie,  Sysadmin,  WebGeek
Gushi on efnet/undernet IRC
ICQ: 13735144   AIM: LarpGM
Site:  http://www.gushi.org
---------------------------

Reply via email to