我目前有超过 200 个主机可以正常使用我的 Puppet Master(puppet agent -t
应用目录)。但是,最近一段时间以来,我无法再添加新主机。除了常规之外,服务器上没有任何变化apt upgrade
。我已经尝试降级 Puppetserver 和 Puppet-agent。自动签名已打开。
笔记常用的“删除代理证书并重试”方法不起作用。如果可以的话,我也不想重新生成服务器证书,因为如果这样做,我将需要手动修复数百个代理。
Puppet 服务器
- Ubuntu 20.04
- puppetserver 7.15(无中间证书)
- 木偶代理 7.28
代理
- 安装了 puppet 7 的各种 Linux/Windows 发行版(多个版本)似乎都受到了影响。
各种实验
Windows 11 代理:
(删除代理的 SSL 目录后)
C:\Windows\system32>puppet agent -t
Info: Certificate revocation is disabled, skipping CRL download
Info: Creating a new RSA SSL key for YYYYY
Info: csr_attributes file loading from C:/ProgramData/PuppetLabs/puppet/etc/csr_attributes.yaml
Info: Creating a new SSL certificate request for YYYYY
Info: Certificate Request fingerprint (SHA256): 49:29:6C:59:21:EE:0B:46:17:58:56:FA:A1:C8:91:1D:77:5A:3A:25:9E:41:00:F1:43:6A:E1:31:39:3C:C3:44
Error: certificate verify failed [unable to get local issuer certificate for CN=XXXX]
Error: certificate verify failed [unable to get local issuer certificate for CN=XXXX]
C:\Windows\system32>puppet ssl verify
Error: Could not run: The client certificate is missing from 'C:/ProgramData/PuppetLabs/puppet/etc/ssl/certs/XXXX.pem'
但是,如果我c:\programdata\puppetlabs\puppet\etc\ssl\certs\ca.pem
从工作系统复制:
C:\Windows\system32>puppet ssl verify
Notice: Verified CA certificate 'CN=Puppet CA: XXXXX' fingerprint (SHA256) 51:E9:79:71:13:92:55:63:07:35:95:D4:95:36:5F:4C:7C:6F:80:D4:EF:18:08:C0:FE:D4:4F:9B:27:12
Notice: Verified client certificate 'CN=YYYY' fingerprint (SHA256) DF:A4:66:92:C0:24:B9:ED:42:C6:B9:53:02:25:DB:45:E3:FA:92:EB:AD:60:2D:D1:19:E2:3A:AF:B0:AD
奇怪的是,curl -k https://YYYY:8140/puppet-ca/v1/certificate/ca
仅包含一个证书,而工作系统他们的 ca.pem 里有两个
Docker 中的 Ubuntu Jammy
在 docker 中测试这个会更快:
FROM ubuntu:latest
RUN apt update ; apt -y install wget curl
RUN wget 'https://apt.puppet.com/puppet7-release-jammy.deb' && apt install ./puppet7-release-jammy.deb
RUN apt update ; apt -y install puppet-agent
RUN /opt/puppetlabs/puppet/bin/puppet agent -t --server YYYY
> [5/5] RUN /opt/puppetlabs/puppet/bin/puppet agent -t --server XXXX:
1.447 Error: certificate verify failed [unable to get local issuer certificate for CN=YYYY]
1.448 Error: certificate verify failed [unable to get local issuer certificate for CN=YYYY]
当我尝试上述所有操作时,puppetserver 日志中没有任何有趣的内容。
更奇怪的是:如果我采用一个正在运行的(Windows)代理并将其克隆到一台新机器(并更改主机名),则在下一次 Puppet 运行后,其所有 pem 文件都将为零字节。
ca_crt.pem
我的工作代理有一个ca.pem
与 puppetserver 的 /etc/puppetlabs/puppet/ssl/ca.pem 匹配的。但是,curl -k https://YYYY:8140/puppet-ca/v1/certificate/ca
返回的是不同的(它返回的内容/etc/puppetlabs/puppetserver/ca/ca_crt.pem
)。一旦我将其替换:
cat /etc/puppetlabs/puppet/ssl/certs/ca.pem > /etc/puppetlabs/puppetserver/ca/ca_crt.pem
我在新代理上遇到了不同的错误:
Error: certificate verify failed [unable to get certificate CRL for CN=YYYY]
到目前为止,我还没有找到重新生成 CRL 的方法,但我发现主主机证书(/etc/puppetlabs/puppet/ssl/YYYY.pem
)的主机名是错误的。
这留下了一些问题:
- 为什么突然就坏了?最近什么都没变。
- 我可以在不破坏每个代理的情况下重新生成主机证书吗?
- 我可以在 Puppet 7 中重新生成 CRL 吗?我发现木偶 5 说明但不是 7。
谢谢你的指点