Comment créer manuellement une autorité de certification et des certificats Puppet?

13

Je me demande comment créer manuellement (en utilisant openssl au lieu de la commande ca puppet) une CA qui serait utilisable par Puppet? Le but serait de créer un script pour ces CA afin de les déployer sur plusieurs puppetmasters, au lieu de créer des certificats via la commande puppet cert.

Des idées sur la façon de le faire? Je n'ai pu trouver que quelque chose comme ça: https://wiki.mozilla.org/ReleaseEngineering/PuppetAgain/HowTo/Set_up_a_standalone_puppetmaster mais cela ne fonctionne pas - après avoir créé CA et client cert et les avoir appliqués à puppetmaster, il se conforme à:

Feb 16 09:35:20 test puppet-master[81728]: Could not prepare for execution: The certificate retrieved from the master does not match the agent's private key.
Feb 16 09:35:20 test puppet-master[81728]: Certificate fingerprint: 4F:08:AE:01:B9:14:AC:A4:EA:A7:92:D7:02:E9:34:39:1C:5F:0D:93:A0:85:1C:CF:68:E4:52:B8:25:D1:11:64
Feb 16 09:35:20 test puppet-master[81728]: To fix this, remove the certificate from both the master and the agent and then start a puppet run, which will automatically regenerate a certficate.
Feb 16 09:35:20 test puppet-master[81728]: On the master:
Feb 16 09:35:20 test puppet-master[81728]:   puppet cert clean test
Feb 16 09:35:20 test puppet-master[81728]: On the agent:
Feb 16 09:35:20 test puppet-master[81728]:   rm -f /var/puppet/ssl/certs/test.pem
Feb 16 09:35:20 test puppet-master[81728]:   puppet agent -t
SpankMe
la source
Merci, mais malheureusement, il dit seulement que c'est possible, sans montrer comment. En plus de cela, il fait référence à une version assez ancienne de Puppet.
SpankMe
@SpankMe Pourquoi ne pas simplement utiliser puppet cert generate?
Shane Madden
3
@Shane Parce que je devrais encapsuler des commandes système dans des scripts avec des objets Popen, valider leur sortie par l'analyse de texte ... C'est beaucoup moins flexible et 'casher' que de simplement utiliser la bibliothèque openssl, et en plus de cela nécessite l'installation de marionnettes sur un serveur , là où il ne devrait pas être installé - je veux seulement y générer des certificats de CA et de clients de marionnettes, puis les distribuer aux machines appropriées.
SpankMe

Réponses:

1

L'agent n'utilise pas le certificat client prégénéré. Il a créé un CSR (avec une nouvelle clé) à la place, donc le maître ne fera pas confiance à l'agent.

Assurez-vous que les fichiers trouvés dans

`puppet agent --configprint ssldir`/{certs,private_keys}/`puppet agent --configprint certname`

sont identiques à celles que vous avez prégénérées et que vous mettez également sur votre maître. (Le maître ne doit pas recevoir de copie de la clé privée de l'agent.)

Felix Frank
la source
-1

Je ne sais pas pourquoi auriez-vous besoin d'un script qui génère des certificats? Une fois la marionnette génère le certificat qui devrait être valable tant que vous avez le client (agent). Sauf si vous avez supprimé le client et créé une nouvelle machine cliente avec le même nom d'hôte. Si vous exécutez une marionnette, il se plaindra en disant qu'il y a une incompatibilité de clé privée. Au lieu de cela, vous devez nettoyer le certificat sur le serveur de marionnettes chaque fois que vous n'avez pas besoin du client (par exemple, vous réinstallez le système d'exploitation ou puppet cert clean testrecréez une machine virtuelle) avec sur puppetmaster.

Nikolas Sakic
la source