Wie erstelle ich manuell eine Puppet CA und Zertifikate?

13

Ich frage mich, wie man manuell (mithilfe von openssl anstelle des Befehls puppet ca) eine Zertifizierungsstelle erstellt, die von Puppet verwendet werden kann. Das Ziel wäre die Skripterstellung solcher Zertifizierungsstellen, um sie auf mehreren Puppenmeistern bereitzustellen, anstatt dass Zertifikate über den Befehl puppet cert auf ihnen erstellt werden.

Irgendwelche Ideen, wie es geht? Ich konnte nur so etwas finden: https://wiki.mozilla.org/ReleaseEngineering/PuppetAgain/HowTo/Set_up_a_standalone_puppetmaster, aber es funktioniert nicht - nachdem CA- und Client-Zertifikat erstellt und auf Puppetmaster angewendet wurden, beschwert es sich mit:

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
Verhau mich
quelle
Danke, aber leider heißt es nur möglich, ohne zu zeigen, wie. Ich füge hinzu, dass es sich um eine ziemlich alte Version von Puppet handelt.
SpankMe
@SpankMe Warum nicht einfach benutzen puppet cert generate?
Shane Madden
3
@Shane Da ich Systembefehle in Skripten mit Popen-Objekten einschließen müsste, deren Ausgabe durch Textanalyse validieren müsste ... Es ist viel weniger flexibel und "koscher" als die einfache Verwendung der openssl-Bibliothek und erfordert darüber hinaus die Installation von Puppets auf einem Server , wo es nicht installiert werden sollte - Ich möchte nur die CA- und Client-Zertifikate der Puppe vorgenerieren und diese dann an die richtigen Maschinen verteilen.
SpankMe

Antworten:

1

Der Agent verwendet das vorgenerierte Client-Zertifikat nicht. Stattdessen wurde eine CSR (mit einem neuen Schlüssel) erstellt, sodass der Master dem Agenten nicht vertraut.

Stellen Sie sicher, dass die Dateien in

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

Sie sind identisch mit denen, die Sie vorgeneriert haben und die Sie auch Ihrem Meister angelegt haben. (Der Master sollte keine Kopie des privaten Schlüssels des Agenten erhalten.)

Felix Frank
quelle
-1

Ich weiß nicht, warum Sie jemals ein Skript benötigen würden, das Zertifikate generiert? Sobald Puppet das Zertifikat erstellt hat, sollte es gültig sein, solange Sie den Kunden (Agenten) haben. Es sei denn, Sie haben den Client entfernt und einen neuen Client-Computer mit demselben Hostnamen erstellt. Wenn Sie Marionette laufen lassen, wird es sich beschweren, dass es private Schlüsselinkongruenz gibt. Stattdessen sollten Sie das Zertifikat auf dem Puppet-Server löschen, wenn Sie den Client nicht benötigen (z. B. wenn Sie das Betriebssystem neu installieren oder eine virtuelle Maschine neu puppet cert clean testerstellen).

Nikolas Sakic
quelle