Como criar manualmente a CA Puppet e certificados?

13

Eu estou querendo saber como manualmente (usando openssl em vez de comando puppet ca) criar CA que seria utilizável pelo Puppet? O objetivo seria criar scripts de tais CAs para implantá-los em vários puppetmasters, em vez de certificados serem criados neles através do comando puppet cert.

Alguma idéia de como fazer isso? Eu só consegui encontrar algo assim: https://wiki.mozilla.org/ReleaseEngineering/PuppetAgain/HowTo/Set_up_a_standalone_puppetmaster, mas ele não funciona - após criar CA e certificado de cliente e aplicá-los ao puppetmaster, ele se queixa:

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
Me bata
fonte
Obrigado, mas infelizmente, apenas diz que é possível, sem mostrar como. Além disso, refere-se à versão bastante antiga do Puppet.
SpankMe
@SpankMe Por que não usar apenas puppet cert generate?
Shane Madden
3
@ Shane Como eu teria que agrupar comandos do sistema em scripts com objetos Popen, validar sua saída analisando texto ... É muito menos flexível e 'kosher' do que simplesmente usar a biblioteca openssl e, além disso, requer instalação de fantoches em um servidor , onde não deve ser instalado - eu só quero pré-gerar a autoridade de certificação do cliente e os certificados do cliente lá e depois distribuí-los para as máquinas apropriadas.
SpankMe

Respostas:

1

O agente não está usando o certificado de cliente pré-gerado. Em vez disso, ele criou um CSR (com uma nova chave), para que o mestre não confie no agente.

Verifique se os arquivos encontrados em

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

são idênticos aos que você pregou e colocou no seu mestre também. (O mestre não deve receber uma cópia da chave privada do agente.)

Felix Frank
fonte
-1

Não sei por que você precisaria de um script que gere certs? Uma vez que o fantoche gera o certificado, deve ser bom enquanto você tiver o cliente (agente). A menos que você tenha removido o cliente e criado uma nova máquina cliente com o mesmo nome de host. Se você executar o fantoche, ele reclamará dizendo que há uma incompatibilidade de chave privada. Em vez disso, você deve limpar o certificado no servidor fantoche sempre que não precisar do cliente (por exemplo, ao reinstalar o SO ou recriar uma máquina virtual) com o puppet cert clean testpuppetmaster.

Nikolas Sakic
fonte