Puppet: Cambiar certificados de cliente puppet o puppetmaster

En uno de nuestros nodos, tenemos el siguiente mensaje:

err: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=]
notice: Using cached catalog
err: Could not retrieve catalog; skipping run
err: Could not send report: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed: [certificate signature failure for /CN=

CASO 1: El certificado erróneo es el del cliente:

En el cliente

Parar el servicio puppet:

service puppet stop

Los certificados, en el nodo, se pueden borrar

find /var/lib/puppet/ssl -name '*.pem' -exec rm {} \;

Antes del siguiente inicio de servicio en puppet, hay que borrar en el servidor su certificado

 En servidor:

puppet cert clean node
service puppetmaster restart
service apache2 restart

CASO  2: El problema está en el certificado del servidor.

Desde el cliente, vamos a hacer una prueba de conexión SSL:

wget https://puppetserver:8140/ --no-proxy
--2014-12-17 12:38:53--  https://mypuppetserver.com:8140/
Resolviendo mypuppetserver.com (mypuppetserver.com)... 10.57.236.13
Conectando con mypuppetserver.com (mypuppetserver.com)[10.57.236.13]:8140... conectado.
ERROR: El certificado de âmypuppetserver.comâ
                                                        ERROR: El certificado de âmypuppetserver.comâ

En el servidor, buscamos qué certificado está usando el servidor apache, para las conexiones por el puerto 8140

grep .pem /etc/apache2/sites-enabled/puppetmaster
        SSLCertificateFile      /var/lib/puppet/ssl/certs/mypuppetserver.com.pem
        SSLCertificateKeyFile   /var/lib/puppet/ssl/private_keys/mypuppetserver.com.pem
        SSLCertificateChainFile /var/lib/puppet/ssl/certs/ca.pem
        SSLCACertificateFile    /var/lib/puppet/ssl/certs/ca.pem
        SSLCARevocationFile     /var/lib/puppet/ssl/ca/ca_crl.pem

Para ver el contenido en texto de cada uno de los certificados

openssl x509 -text -noout -in  /var/lib/puppet/ssl/certs/mypuppetserver.com.pem

En nuestro caso, el problema es que los clientes, quieren que el certificado también esté disponible para el CN=puppet. En el certificado anterior, no estaba de nombre alternativo puppet.

Lo hemos resuelto cambiando el /etc/hosts en servidor, ligando también el nombre puppet a nuestro servidor, y recreando los certificados.

Aunque estamos seguros de que hay mejores formas de regenerar los certificados, tras 1 semana de depuración, los hemos regenerado purgando todos los paquetes de puppet y reinstalando el servidor:

cp -rfp /etc/puppet ~/puppet$(date -I)
apt-get purge puppetmaster puppetmaster-common puppetmaster-passenger
apt-get puppetmaster-passenger
apt-get purge puppetmaster

Crear certificado de usuario para probar servicios web con ssl

En ocasiones es necesario contar con un certificado de usuario, para poder hacer pruebas sobre un servicio web.

Creación del certificado

Para crear el certificado, en una máquina linux con openssl instalado, creamos el certificado. Por defecto, la clave privada se crea con una clave (passphrase). Dado que es un certificado simplemente para test, vamos a crear también el fichero de clave privada sin passphrase (paso 3)

 

# Creación de clave privada
openssl genrsa -out testing_password.key 4096
# Creación de clave pública
openssl req -new -x509 -days 3000 -key testing_password.key -out testing.crt
# Hacer una copia del fichero de claves sin proteger con contraseña
openssl rsa -in testing_password.key -out testing_nopasswd.key
# Exportar en pkcs12 para poderlo usar con navegadores como firefox
openssl pkcs12 -export -out testing.p12 -inkey testing_password.key -in testing.crt

Ver más información

Uso del certificado

Ahora, para probar el servicio web, podemos importarlo desde un navegador , o ponerlo en línea de comando en wget: wget


wget https://myhost.com/service --no-proxy --no-check-certificate --certificate=testing.csr

 

 

Gestión de certificados en Windows 7, 2008Server

Para poder mover de almacén, borrar, exportar, etc. los certificados en una máquina windows 7 o posterior:

En la consola, escribimos mmc

Si no tenemos vista de Certificados, se agrega mediante Archivo > Agregar o quitar complemento > Certificados.

En esta vista, ya será posible trabajar con los certificados.

Ver más información