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.

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>

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

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

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


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.