libre_ops.ca_keys

Clés de l'Autorité de Certification

Ceci est un rôle Ansible pour générer des clés CA privées et des certificats signés. Ceux-ci peuvent être utilisés pour sécuriser les applications serveur/client, où l'on nécessite à la fois le chiffrement des données en transit et l'authentification entre les nœuds.

Lorsqu'elles sont configurées correctement, les clés signées par une CA privée peuvent prévenir les attaques de type MITM, et peuvent être utilisées pour une authentification bidirectionnelle. Un exemple pourrait être la sécurisation des connexions entre les nœuds dans un cluster Kafka ou Elastic Stack.

Le rôle suit ces étapes générales :

  • Générer une paire de clés CA (Autorité de Certification)
  • Générer des clés et des CSR (Demandes de Signature de Certificat) pour les nœuds spécifiés
  • Signer les CSR en utilisant la CA, pour créer des certificats signés (CRTs)
  • Optionnellement, empaqueter les clés nécessaires dans des fichiers binaires de keystore/truststore Java

Par défaut

Consultez tous les paramètres par défaut ici et modifiez-les si nécessaire.

Utilisation

Utilisation recommandée : exécutez le rôle dans un playbook local (voir ci-dessous), puis déplacez les fichiers générés dans un endroit sûr. Ne laissez pas les clés traîner. Ce code est fourni tel quel, il est de votre responsabilité de l'utiliser et de stocker les clés résultantes !

Ce rôle peut être utilisé pour créer de nouvelles clés et CRT à partir d'un certificat CA existant, s'il est présent.

Après leur création, déplacez les fichiers requis dans le projet dans lequel vous les utilisez. Vous pouvez utiliser Ansible Vault pour crypter les fichiers (y compris les fichiers binaires de jks), et des modules Ansible comme copy les déchiffreront lors du téléchargement s'ils ont le mot de passe du coffre-fort.

Vérification des clés

Vous pouvez (et devez) vérifier les clés avec diverses commandes openssl. Voici quelques exemples :

openssl x509 -in generated_keys/ca.crt -text -noout
openssl rsa -in generated_keys/<nom-de-cle>.key -check
openssl x509 -in generated_keys/<nom-de-cle>.crt -text -noout

Limitation Python

En raison d'un bug Ansible (correctif maintenant fusionné dans la branche devel), vous devez utiliser Python 2.7 lors de l'exécution des tâches pour créer des keystores Java. Consultez ce problème pour plus de détails.

Exemple de playbook

- name: Générer des Clés
  hosts: 127.0.0.1
  connection: local
  
  vars:
    ansible_python_interpreter: '/usr/bin/python2.7'

  roles:
    - role: libre_ops.ca_keys
      vars:
        cert_organisation: Exemple Inc.
        cert_unit: Département des Clés
        cert_country: FR
        cert_state: Paris
        cert_location: Paris
        
        create_keys:
          - filename: serveur
            subject:
              - "/CN=app.client.org"
              - "/O={{ cert_organisation }}"
              - "/OU={{ cert_unit }}"
              - "/C={{ cert_country }}"
              - "/ST={{ cert_state }}"
              - "/L={{ cert_location }}"
              
          - filename: client
            subject:
              - "/CN=app.server.org"
              - "/O={{ cert_organisation }}"
              - "/OU={{ cert_unit }}"
              - "/C={{ cert_country }}"
              - "/ST={{ cert_state }}"
              - "/L={{ cert_location }}"    
À propos du projet

Generate private CA keys and signed certificates

Installer
ansible-galaxy install libre_ops.ca_keys
Licence
gpl-3.0
Téléchargements
142
Propriétaire
Ansible roles for syadmin proles.