Comment ajouter plusieurs noms DNS à mon marionnettiste?

16

ma marionnette.conf sur le maître

[master]
certname = myname.mydomain.com
ca_server = myname.mydomain.com
certdnsnames = puppet;puppet.local;myname.dyndns.org;hivemind.local;

pour ma compréhension avec les certdnsnames définis, les éléments suivants devraient fonctionner:

puppet agent --server myname.dyndns.org --test

mais j'obtiens l'erreur suivante:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate

comment éviter cette erreur? comment définir correctement les noms de certificats? j'ai trouvé une documentation différente à ce sujet, mais pas d'exemple simple. ii utiliser "," pour la séparation je ne peux pas signer du tout. j'ai aussi vu une syntaxe comme

certdnsnames = puppet:puppet.intra.myserver.fr,puppet.myserver.fr:puppet,puppet:puppet,puppet.intra.myserver.fr,puppet.myserver.fr

http://projects.puppetlabs.com/issues/5776

mais pour moi, ce n'est pas clair quand ajouter une "marionnette:" et quand non.

c33s
la source

Réponses:

25

Pour le bénéfice de toute autre personne qui tombe sur cette réponse:

En raison de CVE-2011-3872 , Puppet ne prend plus en charge l' certdnsnamesoption. De la documentation:

Le paramètre certdnsnames n'est plus fonctionnel, après CVE-2011-3872. Nous ignorons complètement la valeur. Pour votre propre demande de certificat, vous pouvez définir dns_alt_names dans la configuration et cela s'appliquera localement. Il n'y a aucune option de configuration pour définir des noms alt DNS ou toute autre valeur subjectAltName pour un autre certificat de nœuds. Vous pouvez également utiliser l'option de ligne de commande --dns_alt_names pour définir les étiquettes ajoutées lors de la génération de votre propre CSR.

Vous pouvez générer un certificat SSL pour votre serveur en utilisant subjectAlternativeName comme ceci:

$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>
larsks
la source
3
Remarque supplémentaire: avant d'exécuter la génération de certificats de marionnettes, supprimez les fichiers .pem du maître de marionnettes dans / var / lib / puppet / ssl / private_keys, / var / lib / puppet / ssl / ca / ​​signe / et / var / lib / puppet / ssl / certs. La génération d'un nouveau certificat ne tue pas la connectivité aux clients existants, car ils vérifient le certificat du marionnettiste à l'aide du certificat de l'autorité de certification, qu'ils ont téléchargé lors de la première connexion.
Erik Forsberg
9
Hé, merci Lars du passé. Vous venez de répondre à ma question.
larsks
2

Pour Puppet 4+, utilisez les commandes suivantes pour modifier les noms DNS acceptés pour le certificat puppetserver:

Renommez les certificats existants en * .backup:

mv /etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/ca/signed/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem{,.backup}

générer un nouveau certificat (ajoutez les noms de remplacement souhaités):

puppet cert generate $(hostname -f) --dns_alt_names=$(hostname -f),puppet

redémarrez puppetserver pour utiliser de nouveaux certificats

service puppetserver restart
phiphi
la source
1
  • Tout d'abord, certdnsnamesest une liste séparée par deux points.
  • Deuxièmement, cette erreur se produit car l'agent contacte le maître à l'aide d'un nom d'hôte qui n'était pas inclus lors de la signature du certificat: http://docs.puppetlabs.com/guides/troubleshooting.html
quanta
la source
désolé de ne pas accepter cette réponse, j'ai eu un problème de traduction avec "deux points", donc l'autre réponse m'a aidé en me montrant simplement le bon caractère :) mais merci pour votre réponse
c33s
0

Selon

puppet agent --genconfig

vous devez utiliser une liste séparée par deux-points (":" et non ";").

Il devrait donc être

certdnsnames = 'puppet:puppet.local:myname.dyndns.org:hivemind.local'

HTH

cyberkov
la source
0

Pour ajouter une entrée SAN au certificat de serveur de marionnettes, utilisez:

systemctl stop puppetserver
puppetserver ca setup --subject-alt-names $(hostname -f),puppet
systemctl start puppetserver

peut avoir besoin pour effacer certs existants via rm -rf $(puppet master --configprint ssldir)ainsi

Greg Bray
la source