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

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

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

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

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

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

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

Для всех, кто наткнется на этот ответ:

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

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

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

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

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

Переименуйте существующие сертификаты в * .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
  • Во-первых, certdnsnames это список, разделенный двоеточиями.
  • Во-вторых, эта ошибка возникает из-за того, что агент связывается с мастером, используя имя хоста, которое не было включено при подписании сертификата: http://docs.puppetlabs.com/guides/troubleshooting.html

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

puppet agent --genconfig

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

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

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

HTH

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

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

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