diff --git a/ansible/roles/tls_certificates/tasks/main.yml b/ansible/roles/tls_certificates/tasks/main.yml index a51a832..d310181 100644 --- a/ansible/roles/tls_certificates/tasks/main.yml +++ b/ansible/roles/tls_certificates/tasks/main.yml @@ -14,6 +14,11 @@ - name: "Modus internal_pki / external_reverse_proxy: Zertifikat per ACME gegen interne CA beziehen" block: + - name: openssl sicherstellen (fuer selbstsigniertes Uebergangs-Zertifikat) + ansible.builtin.apt: + name: openssl + state: present + - name: step-ca ACME-Client (step-cli) installieren ansible.builtin.apt: name: step-cli @@ -27,6 +32,34 @@ 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). + + # TODO: Echten ACME-Request gegen die interne CA (step-ca) hier ergaenzen, + # sobald deren URL/Root-Fingerprint/Provisioner bekannt sind (Konzept + # 7.2a). Bis dahin wird als Uebergangsloesung ein selbstsigniertes + # Zertifikat erzeugt, damit nginx ueberhaupt starten kann -- Browser + # zeigen dafuer eine Vertrauenswarnung, das ist KEIN Ersatz fuer eine + # echte interne PKI und muss vor Produktivbetrieb ersetzt werden. + - name: Selbstsigniertes UEBERGANGS-Zertifikat erzeugen (bis echte interne PKI angebunden ist) + ansible.builtin.command: + cmd: >- + openssl req -x509 -newkey rsa:4096 -nodes + -keyout /etc/jumphost/tls/server.key + -out /etc/jumphost/tls/server.crt + -days 825 + -subj "/CN={{ acme_domain | default(inventory_hostname) }}" + -addext "subjectAltName=DNS:{{ acme_domain | default(inventory_hostname) }}" + creates: /etc/jumphost/tls/server.crt + when: not (tls_mode == 'external_reverse_proxy' and (internal_hop_plaintext_accepted | default(false))) + + - name: Warnung wegen selbstsigniertem Uebergangs-Zertifikat ausgeben + ansible.builtin.debug: + msg: > + ACHTUNG: Es wird ein SELBSTSIGNIERTES Uebergangszertifikat unter + /etc/jumphost/tls/server.crt verwendet (kein Vertrauensanker im + Client). Browser zeigen eine Zertifikatswarnung. Vor + Produktivbetrieb durch ein echtes Zertifikat aus der + Unternehmens-PKI ersetzen (s. Hinweis oben / Konzept 7.2a). + when: not (tls_mode == 'external_reverse_proxy' and (internal_hop_plaintext_accepted | default(false))) when: tls_mode in ['internal_pki', 'external_reverse_proxy'] # Alternative zu ACME: vorab per Unternehmens-PKI ausgestellte Dateien einspielen.