Jak ręcznie utworzyć Puppet CA i certyfikaty?

13

Zastanawiam się, jak ręcznie (za pomocą polecenia openssl zamiast komendy puppet ca) utworzyć CA, który byłby użyteczny przez Puppet? Celem byłoby tworzenie skryptów takich urzędów certyfikacji w celu wdrożenia ich na wielu puppetmastersach zamiast tworzenia certyfikatów na nich za pomocą polecenia puppet cert.

Wszelkie pomysły, jak to zrobić? Mogłem tylko znaleźć coś takiego: https://wiki.mozilla.org/ReleaseEngineering/PuppetAgain/HowTo/Set_up_a_standalone_puppetmaster, ale to nie działa - po utworzeniu certyfikatu CA i klienta i zastosowaniu ich do puppetmaster, narzeka:

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
Daj mi klapsa
źródło
Dzięki, ale niestety mówi tylko, że jest to możliwe, nie pokazując, jak to zrobić. Oprócz tego odnosi się do dość starej wersji Puppet.
SpankMe
@SpankMe Dlaczego nie po prostu użyć puppet cert generate?
Shane Madden
3
@Shane Ponieważ musiałbym owijać polecenia systemowe w skrypty obiektami Popen, sprawdzać poprawność ich wyników przez parsowanie tekstu ... Jest znacznie mniej elastyczny i „koszerny” niż zwykłe korzystanie z biblioteki openssl, a ponadto wymaga instalacji marionetek na serwerze , tam, gdzie nie powinno się go instalować - chcę tylko wstępnie wygenerować certyfikat Puppet CA i klienta, a następnie rozdzielić je na odpowiednie maszyny.
SpankMe,

Odpowiedzi:

1

Agent nie używa wstępnie wygenerowanego certyfikatu klienta. Zamiast tego utworzył CSR (z nowym kluczem), więc master nie będzie ufał agentowi.

Upewnij się, że pliki znalezione w

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

są identyczne z tymi, które stworzyłeś i nałożyłeś także na swojego mistrza. (Master nie powinien otrzymywać kopii klucza prywatnego agenta).

Felix Frank
źródło
-1

Nie wiem, dlaczego miałbyś kiedykolwiek potrzebować skryptu generującego certyfikaty? Raz marionetka wygeneruje certyfikat, który powinien być dobry tak długo, jak masz klienta (agenta). Chyba że usunąłeś klienta i nie utworzyłeś nowego komputera klienckiego z tą samą nazwą hosta. Jeśli uruchomisz marionetkę, narzeka, że ​​występuje niedopasowanie klucza prywatnego. Zamiast tego powinieneś wyczyścić certyfikat na serwerze lalek, ilekroć nie potrzebujesz klienta (np puppet cert clean test. Podczas ponownej instalacji systemu operacyjnego lub odtwarzania maszyny wirtualnej) w programie puppetmaster.

Nikolas Sakic
źródło