Назад | Перейти на главную страницу

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

Мне интересно, как вручную (используя openssl вместо команды puppet ca) создать CA, который будет использоваться Puppet? Цель состоит в том, чтобы создать сценарий создания таких центров сертификации, чтобы развернуть их на нескольких мастерах марионетки вместо создания сертификатов на них с помощью команды 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

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

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

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

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

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

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