PUPPET-CERTIFICATE(8)

πŸ“¦
version 5.5.22 Β· 2 versions
, in ubuntu jammy

πŸ’– PUPPET-CERTIFICATE πŸ’–

okay bestie, welcome to the puppet-certificate glow-up β€” this is the 8 section of the Puppet manual, and she's here to give you access to the CA for certificate management. yes queen, let's get into it πŸŽ€


✨ SYNOPSIS ✨

puppet certificate action [--terminus _TERMINUS] [--extra HASH]
--ca-location LOCATION

like, that's the shape of every single call, fr fr πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

This subcommand is the one that talks to a local or remote Puppet certificate authority. ngl, right now her behavior is not a full superset of puppet cert β€” specifically, she can't mimic puppet cert's "clean" option (so sad 😭), and her "generate" action submits a CSR instead of creating a signed certificate. that's just how she is, and we respect her.


🌸 OPTIONS 🌸

okay so first, a lil heads-up that's genuinely important: any setting that's valid in the configuration file is also a valid long argument β€” even if it may or may not be relevant to the present action. for example, server and run_mode are valid settings, so you can specify --server <servername> or --run_mode <runmode> as an argument. iconic, flexible, we love that for you ✨

and if you want the full list of acceptable parameters, go read the configuration file documentation at https://puppet.com/docs/puppet/latest/configuration.html. also, a commented list of all configuration options can be generated by running puppet with --genconfig. periodt.

  • --render-as FORMAT β€” the format in which to render output. the most common formats are json, s (string), yaml, and console, but other options such as dot are sometimes available. mix and match, go off πŸ’…
  • --verbose β€” whether to log verbosely.
  • --debug β€” whether to log debug information.
  • --ca-location LOCATION β€” whether to act on the local certificate authority or one provided by a remote puppet master. Allowed values are 'local' and 'remote.'
🚨 This option is required. like, no negotiation, bestie. you will be specifying a location.
  • --extra HASH β€” a terminus can take additional arguments to refine the operation, which are passed as an arbitrary hash to the back-end. anything passed as the extra value is just send direct to the back-end. no filtering, no judging, straight through 🫢
  • --terminus _TERMINUS β€” okay this one's a whole essay, so buckle up πŸ¦‹

Indirector faces expose indirected subsystems of Puppet. These subsystems are each able to retrieve and alter a specific type of data (with the familiar actions of find, search, save, and destroy) from an arbitrary number of pluggable backends. In Puppet parlance, these backends are called terminuses.

Almost all indirected subsystems have a rest terminus that interacts with the puppet master's data. Most of them have additional terminuses for various local data models, which are in turn used by the indirected subsystem on the puppet master whenever it receives a remote request.

The terminus for an action is often determined by context, but occasionally needs to be set explicitly. See the "Notes" section of this face's manpage for more details. iykyk πŸ‘‘


🌈 ACTIONS 🌈

here's where the main character energy really kicks in. five... no wait, six actions, each with her own little moment πŸ’–


πŸ“ destroy β€” Delete a certificate.

SYNOPSIS

puppet certificate destroy [--terminus _TERMINUS] [--extra HASH]
--ca-location LOCATION host

DESCRIPTION

Deletes a certificate. This action currently only works on the local CA. that's the whole vibe, no notes.

RETURNS

Nothing. absolutely nothing. she takes and she gives nothing back πŸ’€


🧚 find β€” Retrieve a certificate.

SYNOPSIS

puppet certificate find [--terminus _TERMINUS] [--extra HASH]
--ca-location LOCATION host

DESCRIPTION

Retrieve a certificate. simple, elegant, iconic.

RETURNS

An x509 SSL certificate.

πŸ‘€ Note that this action has a side effect of caching a copy of the certificate in Puppet's ssldir. so like, she's not just looking, she's keeping a lil souvenir. just so you know, bestie.

πŸ‘‘ generate β€” Generate a new certificate signing request.

SYNOPSIS

puppet certificate generate [--terminus _TERMINUS] [--extra HASH]
--ca-location LOCATION [--dns-alt-names NAMES] host

DESCRIPTION

Generates and submits a certificate signing request (CSR) for the specified host. This CSR will then have to be signed by a user with the proper authorization on the certificate authority.

Puppet agent usually handles CSR submission automatically. This action is primarily useful for requesting certificates for individual users and external applications. like, she's for the special cases, the niche girls, the solo artists 🎀

OPTIONS

--dns-alt-names NAMES β€” A comma-separated list of alternate DNS names for Puppet Server. These are extra hostnames (in addition to its certname) that the server is allowed to use when serving agents. Puppet checks this setting when automatically requesting a certificate for Puppet agent or Puppet Server, and when manually generating a certificate with puppet cert generate. These can be either IP or DNS, and the type should be specified and followed with a colon. Untyped inputs will default to DNS.

In order to handle agent requests at a given hostname (like "puppet.example.com"), Puppet Server needs a certificate that proves it's allowed to use that name; if a server shows a certificate that doesn't include its hostname, Puppet agents will refuse to trust it. If you use a single hostname for Puppet traffic but load-balance it to multiple Puppet Servers, each of those servers needs to include the official hostname in its list of extra names.

⚠️ Note: The list of alternate names is locked in when the server's certificate is signed. If you need to change the list later, you can't just change this setting; you also need to:
  • On the server: Stop Puppet Server.
  • On the CA server: Revoke and clean the server's old certificate. (puppet cert clean <NAME>) (Note puppet cert clean is deprecated and will be replaced with puppetserver ca clean in Puppet 6.)
  • On the server: Delete the old certificate (and any old certificate signing requests) from the ssldir https://puppet.com/docs/puppet/latest/dirs_ssldir.html.
  • On the server: Run puppet agent -t --ca_server <CA HOSTNAME> to request a new certificate
  • On the CA server: Sign the certificate request, explicitly allowing alternate names (puppet cert sign --allow-dns-alt-names <NAME>). (Note puppet cert sign is deprecated and will be replaced with puppetserver ca sign in Puppet 6.)
  • On the server: Run puppet agent -t --ca_server <CA HOSTNAME> to retrieve the cert.
  • On the server: Start Puppet Server again.

To see all the alternate names your servers are using, log into your CA server and run puppet cert list -a, then check the output for (alt names: ...). Most agent nodes should NOT have alternate names; the only certs that should have them are Puppet Server nodes that you want other agents to trust. don't be out here handing out alt names like party favors, bestie πŸ™ˆ

RETURNS

Nothing.


⭐ info β€” Print the default terminus class for this face.

SYNOPSIS

puppet certificate info [--terminus _TERMINUS] [--extra HASH]
--ca-location LOCATION

DESCRIPTION

Prints the default terminus class for this subcommand. Note that different run modes may have different default termini; when in doubt, specify the run mode with the '--run_mode' option. she's just here to tell you who the default is, like a lil gossip columnist πŸ’…


πŸ’œ list β€” List all certificate signing requests.

SYNOPSIS

puppet certificate list [--terminus _TERMINUS] [--extra HASH]
--ca-location LOCATION

DESCRIPTION

List all certificate signing requests.

RETURNS

An array of #inspect output from CSR objects. This output is currently messy, but does contain the names of nodes requesting certificates. This action returns #inspect strings even when used from the Ruby API. yeah she's a lil chaotic, but she's our chaos 🫢


πŸ”₯ sign β€” Sign a certificate signing request for HOST.

SYNOPSIS

puppet certificate sign [--terminus _TERMINUS] [--extra HASH]
--ca-location LOCATION [--[no-]allow-dns-alt-names] host

DESCRIPTION

Sign a certificate signing request for HOST.

OPTIONS

--[no-]allow-dns-alt-names β€” Whether or not to accept DNS alt names in the certificate request. yes or no, bestie, pick one 🌸

RETURNS

A string that appears to be (but isn't) an x509 certificate. it's giving x509, it's not x509, and honestly? that's a serve πŸ’€


πŸŽ€ EXAMPLES πŸŽ€

generate

Request a certificate for "somenode" from the site's CA:

$ puppet certificate generate somenode.puppetlabs.lan --ca-location remote

sign

Sign somenode.puppetlabs.lan's certificate:

$ puppet certificate sign somenode.puppetlabs.lan --ca-location remote

copy these, run these, slay these ✨


πŸ¦‹ NOTES πŸ¦‹

This subcommand is an indirector face, which exposes find, search, save, and destroy actions for an indirected subsystem of Puppet. Valid termini for this face include:

  • ca
  • disabled_ca
  • file
  • rest

four little terminuses, four little options, all valid, all welcome 🌈


Copyright 2011 by Puppet Inc. Apache 2 license; see COPYING


and that's the whole page, bestie πŸ’– this lil beauty comes to you from Puppet, Inc., dated May 2022 β€” PUPPET-CERTIFICATE(8), no cap. now go manage those certificates, you gorgeous thing πŸ‘‘βœ¨

πŸ“¦ where this page comes from