Как добавить несколько имен DNS для моего puppetmaster?


16

мой puppet.conf на мастере

[master]
certname = myname.mydomain.com
ca_server = myname.mydomain.com
certdnsnames = puppet;puppet.local;myname.dyndns.org;hivemind.local;

для моего понимания с определенными именами certdnsname должно работать следующее:

puppet agent --server myname.dyndns.org --test

но я получаю следующую ошибку:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate

как избежать этой ошибки? как правильно определить certdnsnames? Я нашел различные документы об этом, но не простой пример. я использую "," для разделения я не могу подписать вообще. я также видел такой синтаксис

certdnsnames = puppet:puppet.intra.myserver.fr,puppet.myserver.fr:puppet,puppet:puppet,puppet.intra.myserver.fr,puppet.myserver.fr

http://projects.puppetlabs.com/issues/5776

но для меня не ясно, когда добавить «марионетку», а когда нет.

Ответы:


25

Для блага любого, кто наткнется на этот ответ:

Из-за CVE-2011-3872 , Puppet больше не поддерживает эту certdnsnamesопцию. Из документации:

Параметр certdnsnames больше не работает после CVE-2011-3872. Мы полностью игнорируем значение. Для вашего собственного запроса сертификата вы можете установить dns_alt_names в конфигурации, и он будет применяться локально. Не существует параметра конфигурации для установки альтернативных имен DNS или любого другого значения subjectAltName для сертификата другого узла. В качестве альтернативы вы можете использовать параметр командной строки --dns_alt_names, чтобы установить метки, добавленные при создании вашего собственного CSR.

Вы можете сгенерировать сертификат SSL для вашего сервера, используя subjectAl альтернативное имя, например:

$ puppet cert generate <puppet master's certname> --dns_alt_names=<comma-separated list of DNS names>

3
Дополнительное примечание: перед запуском генерации сертификата puppet удалите файлы .pem для мастера puppet в / var / lib / puppet / ssl / private_keys, / var / lib / puppet / ssl / ca / ​​подписанный / и / var / lib / puppet / SSL / сертификаты. Генерация нового сертификата не нарушает возможности подключения к существующим клиентам, поскольку они проверяют сертификат мастера puppetmaster, используя сертификат CA, который они загрузили при первом подключении.
Эрик Форсберг

9
Привет, спасибо Ларсу из прошлого. Вы только что ответили на мой вопрос.
Жаворонки

2

Для Puppet 4+ используйте следующие команды, чтобы изменить принятые имена DNS для сертификата сервера puppet:

Переименуйте существующие сертификаты в * .backup:

mv /etc/puppetlabs/puppet/ssl/private_keys/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/ca/signed/$(hostname -f).pem{,.backup}
mv /etc/puppetlabs/puppet/ssl/certs/$(hostname -f).pem{,.backup}

создать новый сертификат (добавьте желаемые альтернативные имена):

puppet cert generate $(hostname -f) --dns_alt_names=$(hostname -f),puppet

перезапустите puppetserver, чтобы использовать новые сертификаты

service puppetserver restart

1
  • Во-первых, certdnsnamesэто разделенный двоеточиями список.
  • Во-вторых, эта ошибка возникает из-за того, что агент связывается с мастером, используя имя хоста, которое не было указано при подписании сертификата: http://docs.puppetlabs.com/guides/troublesho.html

извините за то, что не принял этот ответ, у меня была проблема с переводом "двоеточие", поэтому другой ответ помог мне, просто показав мне правильный символ :), но спасибо за ваш ответ
c33s

0

В соответствии с

puppet agent --genconfig

Вы должны использовать разделенный двоеточиями (":" not ";") список.

Так и должно быть

certdnsnames = 'puppet:puppet.local:myname.dyndns.org:hivemind.local'

НТН


0

Чтобы добавить запись SAN в сертификат сервера марионеток, используйте:

systemctl stop puppetserver
puppetserver ca setup --subject-alt-names $(hostname -f),puppet
systemctl start puppetserver

может потребоваться очистить существующие сертификаты через rm -rf $(puppet master --configprint ssldir)а

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.