Как вручную создать Puppet CA и сертификаты?

13

Мне интересно, как вручную (используя openssl вместо команды puppet ca) создать CA, который будет использоваться Puppet? Цель состоит в том, чтобы создать сценарий создания таких ЦС, чтобы развернуть их на нескольких puppetmasters, а не создавать сертификаты на них с помощью команды puppet cert.

Есть идеи как это сделать? Мне удалось найти только что-то подобное: https://wiki.mozilla.org/ReleaseEngineering/PuppetAgain/HowTo/Set_up_a_standalone_puppetmaster, но он не работает - после создания сертификата CA и клиента и применения их к puppetmaster он жалуется:

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
Отшлепай меня
источник
Спасибо, но, к сожалению, это говорит только о том, что это возможно, не показывая как. В дополнение к этому, это относится к довольно старой версии Puppet.
SpankMe
@SpankMe Почему бы просто не использовать puppet cert generate?
Шейн Мэдден
3
@Shane Потому что мне нужно было оборачивать системные команды в сценарии с объектами Popen, проверять их вывод с помощью анализа текста ... Это гораздо менее гибко и «кошерно», чем просто использование библиотеки openssl, и в дополнение к этому требует установки марионеток на сервере где он не должен быть установлен - я хочу только предварительно создать CA CA и клиентские сертификаты Puppet, а затем распространить их на соответствующие машины.
SpankMe

Ответы:

1

Агент не использует предварительно сгенерированный сертификат клиента. Вместо этого он создал CSR (с новым ключом), поэтому мастер не будет доверять агенту.

Убедитесь, что файлы найдены в

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

идентичны тем, которые вы произвели и надели на своего хозяина. (Мастер не должен получать копию личного ключа агента.)

Феликс Франк
источник
-1

Я не знаю, зачем вам нужен скрипт, который генерирует сертификаты? После того, как марионетка генерирует сертификат, который должен быть хорош до тех пор, пока у вас есть клиент (агент). Если вы не удалили клиента и не создали новый клиентский компьютер с тем же именем хоста. Если вы запускаете puppet, он будет жаловаться на несоответствие закрытого ключа. Вместо этого вы должны очищать сертификат на сервере puppet всякий раз, когда вам не нужен клиент (например, вы переустанавливаете ОС или воссоздаете виртуальную машину) с помощью puppet cert clean testpuppetmaster.

Николас Сакич
источник
-1

Пожалуйста, обратитесь по этому адресу. этот URL может помочь решить вашу проблему https://docs.puppet.com/puppet/5.0/ssl_regenerate_certificates.html

Джишин А.В.
источник
Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить сюда основные части ответа и предоставить ссылку для справки.
Дженни Д