libre_ops.ca_keys
Zertifizierungsstellen-Schlüssel
Dies ist eine Ansible-Rolle zur Generierung privater CA-Schlüssel und signierter Zertifikate. Diese können verwendet werden, um Server- und Client-Anwendungen abzusichern, bei denen sowohl die Verschlüsselung von Daten im Transit als auch die Authentifizierung zwischen Knoten erforderlich ist.
Richtig konfiguriert können von einer privaten CA signierte Schlüssel MITM-Angriffe verhindern und für die bidirektionale Authentifizierung verwendet werden. Ein Beispiel könnte die Sicherung der Verbindungen zwischen Knoten in einem Kafka- oder Elastic Stack-Cluster sein.
Die Rolle folgt diesen groben Schritten:
- Erstellen eines CA (Zertifizierungsstelle) Schlüsselpaares
- Erstellen von Schlüsseln und CSRs (Zertifikat-Anfrage) für bestimmte Knoten
- Signieren der CSRs mit der CA, um signierte Zertifikate (CRTs) zu erstellen
- Optional: Verpacken der notwendigen Schlüssel in Java Keystore/Truststore-Binärdateien
Standardeinstellungen
Sehen Sie sich alle Standardeinstellungen hier an und überschreiben Sie sie nach Bedarf.
Verwendung
Empfohlene Verwendung: Führen Sie die Rolle in einem lokalen Playbook aus (siehe unten) und bewegen Sie die generierten Dateien an einen sicheren Ort. Lassen Sie die Schlüssel nicht einfach herumliegen. Dieser Code wird wie er ist bereitgestellt, wie Sie ihn verwenden und die resultierenden Schlüssel speichern, liegt in Ihrer Verantwortung!
Diese Rolle kann verwendet werden, um neue Schlüssel und CRTs aus einem vorhandenen CA-Zertifikat zu erstellen, wenn eines vorhanden ist.
Nachdem sie erstellt wurden, verschieben Sie die erforderlichen Dateien in das Projekt, in dem Sie sie verwenden. Sie können Ansible Vault verwenden, um die Dateien (einschließlich der jks-Binärdateien) zu verschlüsseln, und Ansible-Module wie copy
werden diese während des Uploads entschlüsseln, wenn Ihnen das Vault-Passwort zur Verfügung steht.
Überprüfung der Schlüssel
Sie können (und sollten) die Schlüssel mit verschiedenen openssl
-Befehlen überprüfen. Hier sind einige Beispiele:
openssl x509 -in generated_keys/ca.crt -text -noout
openssl rsa -in generated_keys/<key-name>.key -check
openssl x509 -in generated_keys/<key-name>.crt -text -noout
Python-Einschränkung
Aufgrund eines Ansible-Bugs (Fix jetzt in den devel
-Branch integriert) müssen Sie Python 2.7 verwenden, wenn Sie die Aufgaben zum Erstellen von Java Keystores ausführen. Siehe dieses Problem für Details.
Beispiel-Playbook
- name: Schlüssel generieren
hosts: 127.0.0.1
connection: local
vars:
ansible_python_interpreter: '/usr/bin/python2.7'
roles:
- role: libre_ops.ca_keys
vars:
cert_organisation: Beispiel GmbH
cert_unit: Abteilung Schlüssel
cert_country: DE
cert_state: Berlin
cert_location: Berlin
create_keys:
- filename: server
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