人偶主机名与服务器证书不匹配


10

我正在尝试安装一个装有puppet的Ubuntu VM,以便可以在本地测试我们的生产设置。我无法让puppetmaster和puppet互相交谈。让我引导您完成我的步骤。(服务器hostname是格式为“ web1.xxx.xxx.net”的FQDN)。

因此,首先,我从/etc/puppet/ssl目录中清除了所有pem文件(当然,除了CA pems外),因此可以重新开始。 puppetca --list没有返回结果。

然后,我运行puppetd --test为puppetmaster生成CSR。puppetca --list现在包括我的主机名(“ web1.xxx.xxx.net”)。

然后我跑puppetca --sign web1.xxx.xxx.net。现在又puppetca --list是空的-到目前为止一切正常。

最后,我puppetd --test再次跑步。我得到以下输出:

err: Could not retrieve catalog from remote server: hostname was not match with the server certificate
warning: Not using cache on failed catalog
err: Could not retrieve catalog; skipping run

列出目录的内容将/etc/puppet/ssl显示具有正确服务器名称的PEM文件,该服务器名称与my匹配hostname。有人对如何解决此问题有任何想法吗?

Answers:


9

该错误是因为默认情况下,客户端连接到服务器主机名“ puppet”,但是提供的证书既不具有“ puppet”作为其主题,也不具有SubjectAltName属性。

要修复它,您可以(选择一个):

  1. 而不是通过运行初始化您的puppetmaster的证书puppetd,而是通过运行对其进行初始化puppetmasterd-这将导致证书使用者名称包含“ puppet”。

  2. 您可以使用puppetca --generate --certdnsnames puppet:puppet.mydomain.com web1.xx.xx.xx.netcertdnsnames选项来指定SubjectAltNames列表,该列表将包含在证书中;它应该有一个用冒号分隔的列表,列表包含客户端用来联系服务器的任何名称

  3. 运行而不是仅puppetd --test在客户端上运行,puppetd --test --server=web1.xx.xx.xx.net以便客户端连接到的服务器名称实际上是服务器提供的证书中存在的名称。

查看masterzen的出色博客文章,以进行进一步的故障排除:Puppet SSL Explained


3

您是否检查过puppetmaster日志文件?我发现了同样的问题,并发现服务器记录了证书信息:

[2012-02-28 16:21:09] INFO  
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 2 (0x2)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: CN=ca
        Validity
            Not Before: Feb 26 16:32:46 2012 GMT
            Not After : Feb 24 16:32:46 2017 GMT
        Subject: CN=ubuntu.localdomain

“主题”字段显示CN为“ ubuntu.localdomain”,因此我通过执行以下操作来执行人偶:

puppetd -t --server=ubuntu.localdomain --fqdn=myfqdn

希望这可以帮助 :-)


2

除了Pau回答的内容外,我还要强调一点,您可以使用以下方法检查puppetmasters证书:

openssl x509 -text -in /var/lib/puppet/ssl/certs/<hostname_of_puppet_master>

然后确保从客户端使用完全相同的主机名:

puppetd --server <hostname_of_puppet_master> <etc>

0

这两台服务器都能相互解析吗?我的猜测是,由于要使用VM,可能会缺少名称解析。如果您不使用DNS来让服务器相互解析,则需要/etc/hosts在两个服务器上的文件中添加条目。

Puppet要求主机名解析为正确的IP,否则,您将得到提到的错误。完成此操作后,您可能需要重新创建证书。两台机器都应能够按主机名ping通每个主机。

使用VM时要注意的另一件事是同步服务器上的时间。如果您不这样做,则证书可能无效。


嗯,我应该指定。Puppet和Puppetmaster都在同一服务器上运行。我的VM。是的,我可以使用FQDN从自身ping计算机。
RISCfuture 2010年

抱歉,约书亚不正确。puppet不会对显示的证书进行DNS-> IP验证。它确实执行主机名到证书名验证,这是导致错误的原因。
eric sorenson 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.