Hi,
I haven't built this kind of scheme, but yes, Puppet should be able to
do this for you.
You will have to implement
1. A defined type that signs a cert for a given CN.
2. A custom fact that holds all signed certificates in a hash structure
suitable for
3. A defined type that wraps the export of
4. A defined type that installs a certificate from PEM input at the
appropriate location.
Each agent node that needs a cert will *export* the "sign cert" resource.
@@cert_to_sign { "service-x": cn => $fqdn, target =>
'/some/cert/location.pem' }
The CA machine collects all these requests.
Cert_to_sign<<| |>>
It also exports these certificates back to the requestors.
create_resources('export_signed_cert', $signed_cert_list) # <- this is
the custom fact
define export_signed_cert($cn,$target,$pem_content) {
@@signed_cert { $name: cn => $cn, target => $cn, content =>
$pem_content }
}
Then each agent can import its own certificates.
Signed_cert<<| cn == $fqdn |>>
This is all quite abstract and I'm not sure I've thought everything
through. But this could be a rough design for what you need.
HTH,
Felix