Open source Puppet documentation

This information describes the supported and tested configurations for external CAs in this version of Puppet. If you have an external CA use case that isn’t listed here, contact Puppet so we can learn more about it.

Supported external CA configurations

This version of Puppet supports some external CA configurations, however not every possible configuration is supported.

We fully support the following setup options:
Fully supported by Puppet means:
  • If issues arise that are considered bugs, we'll fix them as soon as possible.

  • If issues arise in any other external CA setup that are considered feature requests, we’ll consider whether to expand our support.

General notes and requirements

PEM encoding of credentials is mandatory

Puppet expects its SSL credentials to be in .pem format.

Normal Puppet certificate requirements still apply

Any Puppet Server certificate must contain the DNS name, either as the Subject Common Name (CN) or as a Subject Alternative Name (SAN), that agent nodes use to attempt contact with the server.

Option 1: Single CA

When Puppet uses its internal CA, it defaults to a single CA configuration. A single externally issued CA can also be used in a similar manner.



This is an all or nothing configuration rather than a mix-and-match. When using an external CA, the built-in Puppet CA service must be disabled and cannot be used to issue SSL certificates.

Note: Puppet cannot automatically distribute certificates in this configuration. You must have your own complete system for issuing and distributing the certificate.

Puppet Server

Configure Puppet Server in three steps:
  • Disable the internal CA service.

  • Ensure that the certname will not change.

  • Put certificates and keys in place on disk.

  1. To disable the internal CA, edit the Puppet Server/etc/puppetlabs/puppetserver/services.d/ca.cfg file to comment and uncomment the appropriate settings:
    # puppetlabs.services.ca.certificate-authority-service/certificate-authority-service
    puppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service
  2. Set a static value for the certname setting in puppet.conf:
    [master]
    certname = puppetserver.example.com
    
    Setting a static value prevents any confusion if the machine's hostname changes. The value must match the certname you’ll use to issue the server's certificate, and it must not be blank.
  3. Put the credentials from your external CA on disk in the correct locations. These locations must match what’s configured in your webserver.conf file.
    If you haven’t changed those settings, run the following commands to find the default locations.
    CredentialFile location
    Server SSL certificate puppet config print hostcert --section master
    Server SSL certificate private key puppet config print hostprivkey --section master
    Root CA certificate puppet config print localcacert --section master
    Root certificate revocation list puppet config print hostcrl --section master

    If you’ve put the credentials in the correct locations, you shouldn’t need to change any additional settings.

Puppet agent

You don’t need to change any settings. Put the external credentials into the correct filesystem locations. You can run the following commands to find the appropriate locations.

CredentialFile location
Agent SSL certificatepuppet config print hostcert --section agent
Agent SSL certificate private keypuppet config print hostprivkey --section agent
Root CA certificatepuppet config print localcacert --section agent
Root certificate revocation listpuppet config print hostcrl --section agent
Back to top