如何预签名木偶证书?


26

Puppet要求在受管理的客户端(puppet)和服务器(puppetmaster)之间提供证书。您可以在客户端上手动运行,然后转到服务器上以对证书进行签名,但是如何针对群集/云计算机自动执行此过程?


1
一个极端的问题是当您重新使用主机名时。自动签名不能解决这个问题。我遇到同样的问题。
Joel K

Answers:


28

在服务器(puppetmaster)上运行:

puppetca --generate <NAME>

然后将以下内容从服务器复制到客户端:

/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem

如果您希望<NAME>使用主机名以外的其他方式签名,请使用:

puppetd --fqdn=<NAME>

如果运行守护程序,则添加到/etc/puppet/puppet.conf中

[puppetd]
certname=<NAME>

真的很有用,谢谢。我一直对此感到困惑。
乔恩·托珀

1
新命令puppet cert --generate <NAME>请参见serverfault.com/a/457364/71452
c33s 18-10-23

6

如果您有主机数据库,则可以使用自动签名功能。在puppet.conf文件的中[puppetmasterd],添加:

autosign = /path/to/autosign.conf

然后使用crontab生成此文件。自动签名文件只是主机首次连接到puppetmaster时要自动签名的主机的列表。我使用LDAP配置我的人偶主机,因此我的cron如下所示:

* * * * * root /usr/bin/ldapsearch -x '(objectClass=puppetClient)' cn | /bin/grep ^cn | /bin/sed 's!^cn: !!' > /etc/puppet/autosign.conf

我确信使用iClassify的人将能够编写查询来执行相同的操作。

当然,您需要对网络有一些信任。我在EC2上使用它。我的puppetmaster服务器在一个组中,该组仅允许来自其他受信任组的连接。如果您的人偶大师可以上网,我不建议您这样做。


6

简单的答案:自动签署新请求。这当然很危险,因为您盲目地信任连接到puppetmaster的任何系统,这是要求手动签名的目的。

[puppetmasterd]
autosign = true

您还可以指定false和用于确定要签名的密钥的文件。

请参阅Puppet Wiki上的配置参考

另一种选择是使用Capistrano之类的工具,在其中指定puppetmaster节点并创建客户端实例节点,然后在任务中:

  • 创建实例节点,例如使用带有Ruby的EC2 API。
  • 在实例上运行puppetd,连接到服务器。
  • 运行puppetca --sign实例的请求(因为我们知道实例名称,如上面创建位中所给定的那样)。
  • 在实例上再次运行puppetd,这次成功连接,因为对证书进行了签名。

注意:如果您使用的是Puppet 2.6或更高版本,则该[puppetmasterd]部分的标题现在应该为[master]。有关更多信息,请参阅docs.puppetlabs.com/guides/tools.html
MrLore

4

在服务器(puppetmaster)上运行:

puppetca --generate <NAME>

然后将以下内容从服务器复制到客户端:

/var/lib/puppet/ssl/certs/<NAME>.pem
/var/lib/puppet/ssl/certs/ca.pem
/var/lib/puppet/ssl/private_keys/<NAME>.pem

如果您希望使用除主机名以外的名称,请使用:

puppetd --fqdn=<NAME>

如果运行守护程序,则添加到/etc/puppet/puppet.conf中

[puppetd]
certname=<NAME>

对我来说,这似乎更加复杂。您将puppet安装在客户端上,它会生成证书并将其发送给主服务器进行签名。当您在主服务器上签名时,客户端将在下次运行时开始工作。这涉及较少的步骤。如果您确实要保存此步骤,则可以运行cron作业,该作业类似于:for $(puppetca --list)中的主机;做puppetca --sign $ host; 完成
David Pashley 09年

1
如果您有一台或两台计算机,这很好,但是当您在云中启动和停止计算机时,您不需要手动执行此操作,那么我可以启动一台基础计算机,运行一个可以运行并设置所有内容的脚本通过木偶启动,而不必登录到木偶主机。
Ranguard
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.