¿Cómo crear manualmente Puppet CA y certificados?

13

Me pregunto cómo crear manualmente (usando openssl en lugar del comando puppet ca) crear CA que Puppet pueda utilizar. El objetivo sería la creación de scripts de tales CA para implementarlos en múltiples titiriteros, en lugar de crear certificados en ellos a través del comando puppet cert.

¿Alguna idea de cómo hacerlo? Solo pude encontrar algo así: https://wiki.mozilla.org/ReleaseEngineering/PuppetAgain/HowTo/Set_up_a_standalone_puppetmaster pero no funciona, después de crear CA y certificado de cliente y aplicarlos a puppetmaster, se queja con:

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
Pegarme
fuente
Gracias, pero desafortunadamente, solo dice que es posible, sin mostrar cómo. Además de eso, se refiere a una versión bastante antigua de Puppet.
SpankMe
@SpankMe ¿Por qué no solo usar puppet cert generate?
Shane Madden
3
@Shane Debido a que tendría que ajustar los comandos del sistema en scripts con objetos Popen, validar su salida mediante el análisis de texto ... Es mucho menos flexible y 'kosher' que simplemente usar la biblioteca openssl, y además requiere la instalación de títeres en un servidor , donde no debería instalarse: solo quiero pregenerar los certificados de CA y de cliente de Puppet allí, y luego distribuirlos a las máquinas adecuadas.
SpankMe

Respuestas:

1

El agente no está utilizando el certificado de cliente pregenerado. En su lugar, creó una CSR (con una nueva clave), por lo que el maestro no confiará en el agente.

Asegúrese de que los archivos encontrados en

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

son idénticos a los que pregeneraste y también pusiste en tu maestro. (El maestro no debe recibir una copia de la clave privada del agente).

Felix Frank
fuente
-1

No sé por qué necesitarías un script que genere certificados. Una vez que Puppet genera el certificado que debería ser bueno mientras tenga el cliente (agente). A menos que elimine el cliente y cree una nueva máquina cliente con el mismo nombre de host. Si ejecuta Puppet, se quejará diciendo que hay una discrepancia de clave privada. En su lugar, debe limpiar el certificado en el servidor de Puppet cuando no necesite el cliente (por ejemplo, si está reinstalando el sistema operativo o recreando una máquina virtual) con puppet cert clean testpuppetmaster.

Nikolas Sakic
fuente