Don't know if this is suitable, but an alternative may be to:
- Generate certificate for host on Puppet master, rather than generating CSR from Puppet agent for signing
- If a host requires rebuild, rebuild it with the same FQDN
- Initiate Puppet agent
?
Without testing, I'm assuming the Puppet agent will grab the existing certificate for its host's FQDN.
Alternatively, you may generate and copy the certificates to a network share, and have a first-run script copy the certificate based on the host's hostname/FQDN to the host before initiating a Puppet run.
Would be interested to know if either method works, should you try.