Как генерировать сертификаты для (вторичного)компиляции puppetserver?

Я пытаюсь масштабировать 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
0
задан 30 September 2021 в 08:48
1 ответ

При циклическом переборе 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, альтернативные имена не включаются.

0
ответ дан 30 September 2021 в 12:11

Теги

Похожие вопросы