如何手动创建Puppet CA和证书?


13

我想知道如何手动(使用openssl代替puppet ca命令)创建可供Puppet使用的CA?目标是对此类CA进行脚本创建,以将其部署到多个puppetmasters上,而不是通过puppet cert命令在其上创建证书。

关于如何做的任何想法?我只能找到类似的内容:https : //wiki.mozilla.org/ReleaseEngineering/PuppetAgain/HowTo/Set_up_a_standalone_puppetmaster,但是它无法正常工作-在创建CA和客户端证书并将它们应用于puppetmaster之后,它抱怨:

Feb 16 09:35:20 test puppet-master[81728]: Could not prepare for execution: The certificate retrieved from the master does not match the agent's private key.
Feb 16 09:35:20 test puppet-master[81728]: Certificate fingerprint: 4F:08:AE:01:B9:14:AC:A4:EA:A7:92:D7:02:E9:34:39:1C:5F:0D:93:A0:85:1C:CF:68:E4:52:B8:25:D1:11:64
Feb 16 09:35:20 test puppet-master[81728]: To fix this, remove the certificate from both the master and the agent and then start a puppet run, which will automatically regenerate a certficate.
Feb 16 09:35:20 test puppet-master[81728]: On the master:
Feb 16 09:35:20 test puppet-master[81728]:   puppet cert clean test
Feb 16 09:35:20 test puppet-master[81728]: On the agent:
Feb 16 09:35:20 test puppet-master[81728]:   rm -f /var/puppet/ssl/certs/test.pem
Feb 16 09:35:20 test puppet-master[81728]:   puppet agent -t


谢谢,但不幸的是,它只是说出了可能,而没有说明如何做。除此以外,它指的是Puppet的较旧版本。
SpankMe

@SpankMe为什么不只是使用puppet cert generate
Shane Madden

3
@Shane因为我必须将系统命令包装在带有Popen对象的脚本中,所以可以通过文本解析来验证它们的输出...其灵活性和“洁净性”比简单地使用openssl库要小得多,此外,还需要在服务器上安装p ,不应该安装它的位置-我只想在那里预先生成puppet的CA和客户端证书,然后将它们分发到适当的计算机上。
SpankMe

Answers:


1

代理未使用预生成的客户端证书。相反,它创建了一个CSR(带有新密钥),因此主服务器将不信任该代理。

确保在以下位置找到文件

`puppet agent --configprint ssldir`/{certs,private_keys}/`puppet agent --configprint certname`

与您预先生成并放在母版上的那些相同。(主应接受代理的私有密钥的副本。)


-1

我不知道您为什么需要生成证书的脚本?只要您拥有客户端(代理),木偶生成的证书就应该一直有效。除非您删除了客户端并使用相同的主机名创建新的客户端计算机。如果您运行up,它将抱怨说私钥不匹配。相反,只要不需要puppet cert clean testpuppetmaster上的客户端(例如,您正在重新安装OS或重新创建虚拟机),就应该在puppet服务器上清除证书。


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.