second commit

This commit is contained in:
2026-08-19 22:33:19 +02:00
parent 411812e954
commit 199f306993
107 changed files with 5984 additions and 0 deletions

View File

@ -0,0 +1,85 @@
---
# Drei TLS-Modi (Konzept 7.2a), gesteuert ueber tls_mode. Ergebnis ist in
# allen Faellen identisch: /etc/jumphost/tls/server.{crt,key} bzw. bei
# external_reverse_proxy zusaetzlich das interne Re-Encryption-Zertifikat
# fuer nginx unter demselben Pfad (nginx_proxy-Rolle nutzt diese Dateien).
- name: TLS-Verzeichnis anlegen
ansible.builtin.file:
path: /etc/jumphost/tls
state: directory
owner: root
group: "{{ jumphost_app_group if not enable_nginx_proxy else 'root' }}"
mode: "0750"
- name: "Modus internal_pki / external_reverse_proxy: Zertifikat per ACME gegen interne CA beziehen"
block:
- name: step-ca ACME-Client (step-cli) installieren
ansible.builtin.apt:
name: step-cli
state: present
ignore_errors: true # Paket ist nicht in allen Distros verfuegbar, siehe Fallback unten
- name: Hinweis auf manuellen/alternativen Cert-Bezug
ansible.builtin.debug:
msg: >
Falls step-cli nicht verfuegbar ist: Zertifikat/Key manuell aus der
Unternehmens-PKI beziehen und ALS ansible-vault-verschluesselte
Dateien unter files/tls/{{ inventory_hostname }}.crt / .key ablegen;
diese Rolle kopiert sie dann per copy-Task (siehe unten, auskommentiert).
when: tls_mode in ['internal_pki', 'external_reverse_proxy']
# Alternative zu ACME: vorab per Unternehmens-PKI ausgestellte Dateien einspielen.
# - name: Vorab ausgestelltes internes Zertifikat einspielen
# ansible.builtin.copy:
# src: "files/tls/{{ inventory_hostname }}.crt"
# dest: /etc/jumphost/tls/server.crt
# when: tls_mode in ['internal_pki', 'external_reverse_proxy']
- name: "Modus acme_public: Certbot fuer oeffentliches Let's-Encrypt-Zertifikat"
block:
- name: certbot installieren
ansible.builtin.apt:
name: certbot
state: present
- name: Zertifikat beziehen (nginx-Plugin, HTTP-01)
ansible.builtin.command:
cmd: >
certbot certonly --nginx --non-interactive --agree-tos
-m {{ acme_email }} -d {{ acme_domain }}
creates: "/etc/letsencrypt/live/{{ acme_domain }}/fullchain.pem"
when: enable_nginx_proxy
- name: Symlinks fuer einheitlichen Pfad anlegen
ansible.builtin.file:
src: "/etc/letsencrypt/live/{{ acme_domain }}/{{ item.src }}"
dest: "/etc/jumphost/tls/{{ item.dest }}"
state: link
loop:
- { src: fullchain.pem, dest: server.crt }
- { src: privkey.pem, dest: server.key }
- name: Certbot-Renew-Timer aktivieren
ansible.builtin.service:
name: certbot.timer
state: started
enabled: true
when: tls_mode == 'acme_public'
- name: Warnung bei Klartext-internem Hop protokollieren (bewusste Ausnahme, Konzept 7.2a)
ansible.builtin.debug:
msg: >
ACHTUNG: internal_hop_plaintext_accepted=true gesetzt -- die Strecke
zwischen externem Reverse Proxy und diesem Jumphost laeuft unverschluesselt.
Dies ist NICHT die Standardempfehlung und erfordert eine dokumentierte
Risikoakzeptanz (siehe Konzept 7.2a).
when: tls_mode == 'external_reverse_proxy' and internal_hop_plaintext_accepted | default(false)
- name: Zertifikatsdateien-Rechte absichern
ansible.builtin.file:
path: /etc/jumphost/tls
owner: root
group: "{{ jumphost_app_group if not enable_nginx_proxy else 'root' }}"
mode: "0750"
recurse: true