我已将 Puppet Server 配置为使用外部 CA,并生成了必要的密钥。
我的 puppet.conf 如下所示:
[master]
vardir = /opt/puppetlabs/server/data/puppetserver
logdir = /var/log/puppetlabs/puppetserver
rundir = /var/run/puppetlabs/puppetserver
pidfile = /var/run/puppetlabs/puppetserver/puppetserver.pid
codedir = /etc/puppetlabs/code
ca = false
cacert = /etc/puppet/ssl/certs/bubbleshadow-ca-cert.pem
hostcert = /etc/puppet/ssl/certs/bubbleshadow-server-cert.pem
hostprivkey = /etc/puppet/ssl/private_keys/bubbleshadow-server-key.pem
ssl_client_ca_auth = /etc/puppet/ssl/certs/bubbleshadow-ca-cert.pem
[agent]
server = puppet.bubbleshadow.net
hostcert = /etc/puppet/ssl/certs/bubbleshadow-agent-cert.pem
hostprivkey = /etc/puppet/ssl/private_keys/bubbleshadow-agent-key.pem
localcacert = /etc/puppet/ssl/certs/bubbleshadow-ca-cert.pem
certificate_revocation = false
但是,当我尝试运行puppet agent --test --debug
(在与服务器相同的节点上)时,我得到以下输出:
调试:使用缓存的证书进行 CA
调试:动态绑定服务器查找失败,恢复至 ca_server 设置
调试:动态绑定端口查找失败;恢复至 ca_port 设置
这会继续循环,直到最终出现错误:
错误:无法运行:堆栈级别太深
我不明白为什么它要尝试使用 CA 做任何事情,因为该证书已经使用 openssl 手动签名。
答案1
如果您希望 puppet 使用外部 CA(例如,在运行多个 puppetmaster 时),则需要ca server
在 puppet.conf 中包含一条声明。
这需要指向 puppet 应该联系 CA 服务的服务器。您的配置似乎不包含该服务器。
https://docs.puppet.com/guides/scaling_multiple_masters.html#centralize-the-certificate-authority有一些关于此的有用信息。