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 }}"
Generate private CA keys and signed certificates
ansible-galaxy install libre_ops.ca_keys