libre_ops.ca_keys

Claves de la Autoridad Certificadora

Este es un rol de Ansible para generar claves privadas de CA (Autoridad Certificadora) y certificados firmados. Estos pueden ser utilizados para asegurar aplicaciones de servidor/cliente, donde se requiere tanto la encriptación de datos en tránsito como la autenticación entre nodos.

Cuando está configurado correctamente, las claves firmadas por una CA privada pueden prevenir ataques MITM (hombre en el medio) y pueden usarse para autenticación bidireccional. Un ejemplo podría ser asegurar las conexiones entre nodos en un clúster de Kafka o Elastic Stack.

El rol sigue estos pasos básicos:

  • Generar un par de claves de CA (Autoridad Certificadora)
  • Generar claves y CSR (Solicitudes de Firma de Certificado) para nodos especificados
  • Firmar las CSR utilizando la CA, para crear certificados firmados (CRT)
  • Opcionalmente, empaquetar las claves necesarias en binarios de keystore/truststore de Java

Valores por defecto

Consulta todos los valores por defecto aquí y sobreescríbelos según sea necesario.

Uso

Uso recomendado: ejecuta el rol en un playbook local (ver abajo), luego mueve los archivos generados a un lugar seguro. No dejes las claves a la vista. Este código se proporciona tal cual, cómo lo uses y almacenes las claves resultantes es tu responsabilidad.

Este rol puede usarse para crear nuevas claves y CRT a partir de un certificado CA existente si hay alguno presente.

Después de que se crean, mueve los archivos requeridos al proyecto en el que los estás usando. Puedes utilizar Ansible Vault para encriptar los archivos (incluyendo los binarios jks), y módulos de Ansible como copy los desencriptarán durante la subida si se les proporciona la contraseña del vault.

Verificación de las claves

Puedes (y debes) verificar las claves con varios comandos de openssl. Aquí hay algunos ejemplos:

openssl x509 -in generated_keys/ca.crt -text -noout
openssl rsa -in generated_keys/<nombre-de-la-clave>.key -check
openssl x509 -in generated_keys/<nombre-de-la-clave>.crt -text -noout

Limitación de Python

Debido a un error en Ansible (la corrección ya ha sido fusionada en la rama 'devel'), debes usar Python 2.7 al ejecutar las tareas para crear keystores de Java. Consulta este problema para más detalles.

Ejemplo de playbook

- name: Generar Claves
  hosts: 127.0.0.1
  connection: local
  
  vars:
    ansible_python_interpreter: '/usr/bin/python2.7'

  roles:
    - role: libre_ops.ca_keys
      vars:
        cert_organisation: Ejemplo Inc.
        cert_unit: Departamento de Claves
        cert_country: FR
        cert_state: París
        cert_location: París
        
        create_keys:
          - filename: servidor
            subject:
              - "/CN=app.client.org"
              - "/O={{ cert_organisation }}"
              - "/OU={{ cert_unit }}"
              - "/C={{ cert_country }}"
              - "/ST={{ cert_state }}"
              - "/L={{ cert_location }}"
              
          - filename: cliente
            subject:
              - "/CN=app.server.org"
              - "/O={{ cert_organisation }}"
              - "/OU={{ cert_unit }}"
              - "/C={{ cert_country }}"
              - "/ST={{ cert_state }}"
              - "/L={{ cert_location }}"    
Acerca del proyecto

Generate private CA keys and signed certificates

Instalar
ansible-galaxy install libre_ops.ca_keys
Licencia
gpl-3.0
Descargas
142
Propietario
Ansible roles for syadmin proles.