Я пытаюсь масштабировать puppetserver ,чтобы иметь избыточность, используя DNS с циклическим перебором. Вторичнаяpuppetserver
(версия7.4.0
)настроена на использование центра сертификации первичного сервераpuppetserver
:
/etc/puppetlabs/puppet/puppet.conf
:
[main]
ca_name = Puppet CA: puppet-ca-master.company.com
ca_server = puppet-ca-master.company.com
[agent]
server = puppet-ca-master.company.com
runinterval=1800
На вторичном сервере я отключил службу CA, так как в нем может быть только один центр сертификации/etc/puppetlabs/puppetserver/services.d/ca.cfg
:
# To enable the CA service, leave the following line uncommented
# puppetlabs.services.ca.certificate-authority-service/certificate-authority-service
# To disable the CA service, comment out the above line and uncomment the line below
puppetlabs.services.ca.certificate-authority-disabled-service/certificate-authority-disabled-service
puppetlabs.trapperkeeper.services.watcher.filesystem-watch-service/filesystem-watch-service
Я удалил сертификаты из вторичный, чтобы получить сертификат, подписанный сертификатом, от главного ЦС:
rm -rf /etc/puppetlabs/puppet/ssl && mkdir -p /etc/puppetlabs/puppet/ssl/certs
chmod 0700 /etc/puppetlabs/puppet/ssl
chown -R puppet /etc/puppetlabs/puppet/ssl
Однако служба puppetserver
отказывается запускаться из-за отсутствия сертификата:
2021-09-30T09:06:18.220+02:00 ERROR [async-dispatch-2] [p.t.internal] Error during service start!!!
java.lang.IllegalArgumentException: Unable to open 'ssl-cert' file: /etc/puppetlabs/puppet/ssl/certs/secondary-puppetserver.company.com.pem
Когда я пытаюсь запустить puppet agent -t
на вторичном кукольном сервере, ему не удается подписать сертификат:
Couldn't fetch certificate from CA server; you might still need to sign this agent's certificate (secondary-puppetserver.company.com)
Причем генерируется закрытый ключ, а не открытый:
ll /etc/puppetlabs/puppet/ssl/public_keys/
total 0
При циклическом переборе DNS конфигурация главного ЦС /etc/puppetlabs/puppetserver/conf.d/ca.conf
должна включать:
allow-subject-alt-names: true
Перезапуск puppetserver
и создание сертификатов для вторичного сервера на главном ЦС:
puppetserver ca generate --certname puppet-secondary.company.com --subject-alt-names=puppet-secondary.company.com,puppet.company.com
передача сертификатов:
rsync -a /etc/puppetlabs/puppet/ssl/private_keys/puppet-secondary.company.com.pem secondary-puppet:/etc/puppetlabs/puppet/ssl/private_keys/
rsync -a /etc/puppetlabs/puppet/ssl/certs/puppet-secondary.company.com.pem secondary-puppet:/etc/puppetlabs/puppet/ssl/certs/
rsync -a /etc/puppetlabs/puppet/ssl/public_keys/puppet-secondary.company.com.pem secondary-puppet:/etc/puppetlabs/puppet/ssl/public_keys/
и ЦС
rsync -ra /etc/puppetlabs/puppetserver/ca/{ca_crl.pem,ca_crt.pem} secondary-puppet:/etc/puppetlabs/puppetserver/ca/
На вторичном сервере убедитесь, что служба ЦС отключена в /etc/puppetlabs/puppetserver/services.d/ca.cfg
.
И убедитесь, что веб-сервер настроен на использование правильных сертификатов./etc/puppetlabspuppetserver/conf.d/webserver.conf
:
webserver: {
access-log-config: /etc/puppetlabs/puppetserver/request-logging.xml
client-auth: want
ssl-host: 0.0.0.0
ssl-port: 8140
ssl-cert: /etc/puppetlabs/puppet/ssl/certs/puppet-secondary.company.com.pem
ssl-key: /etc/puppetlabs/puppet/ssl/private_keys/puppet-secondary.company.com.pem
ssl-ca-cert: /etc/puppetlabs/puppetserver/ca/ca_crt.pem
ssl-crl-path: /etc/puppetlabs/puppetserver/ca/ca_crl.pem
}
На мастер-центре DNS могут быть проверены альтернативные имена. Все кукольные серверы должны включать одно и то же доменное имя и другое уникальное имя.
puppetserver ca list --all
ищите alt names: ["DNS:...
. Когда сертификат создается с использованием puppet agent
, альтернативные имена не включаются.