CA-Zertifikat in Docker
Für die Anbindung von Diensten mit selbstsigniertem oder unternehmensinternem TLS-Zertifikat muss die zugehörige Root- oder Intermediate-CA im Trust Store des Relution-Containers hinterlegt werden, damit die Verbindung als vertrauenswürdig eingestuft wird. Je nach Relution-Version kommen dafür unterschiedliche Verfahren zum Einsatz.
Zertifikate über die Benutzeroberfläche hinterlegen
Neu in 26.4Das Docker-Image von Relution basiert ab Version 26.4 auf Ubuntu statt auf AlmaLinux. Dadurch entfällt im Container der Pfad /etc/pki/ca-trust/source/anchors/, sodass ein Copy-Skript auf Basis dieses Pfads fehlschlägt. Ab Relution 26.4 erfolgt die Hinterlegung von CA-Zertifikaten daher über die Benutzeroberfläche — ein Vorteil dabei ist zudem, dass sich die Konfiguration so auch im laufenden Betrieb anpassen lässt.
Dafür sind folgende Schritte erforderlich:
- Ein bestehendes Prerun-Script (Umgebungsvariable
RELUTION_PRERUN_SCRIPTin derdocker-compose.yml) wird aus der Konfiguration entfernt, anschließend wird der Relution-Container neu gestartet. - Die Anmeldung erfolgt in der globalen Organisation.
- Unter
Einstellungen→Zertifikatewerden die gewünschten CA-Zertifikate hochgeladen (siehe Zertifikatsverwaltung →). - Unter
Einstellungen→TLS-Vertrauenskonfiguration→Vertrauenswürdige Zertifikatewerden die hochgeladenen CA-Zertifikate über Zertifikat hinzufügen aus der Zertifikatsbibliothek ausgewählt.
Script-basierte Einbindung (vor Relution 26.4)
Anleitung anzeigen
Zudem ist im Zuge einer geplanten Umstellung auf einen rootless-Container vorgesehen, dass eine nachträgliche Installation von Zertifikaten über die CLI generell nicht mehr möglich sein wird.
Bei Relution-Versionen vor 26.4 — mit einem Docker-Image auf AlmaLinux-Basis — kann ein Zertifikat wie im Folgenden beschrieben über ein Prerun-Script in den Container geladen werden. Im Beispiel ist im Verzeichnis, in dem die docker-compose.yml abgelegt wurde, ein Unterverzeichnis selfsigned angelegt, in dem das Zertifikat und das zugehörige Script liegen. In diesem Ordner wird eine Datei mit folgendem Inhalt angelegt. Im Beispiel trägt die Datei den Namen trust_selfsigned.sh. Das zu kopierende Zertifikat hat den Dateinamen CAcert.pem.
Beim Ausführen des Prerun-Scripts erscheint auf einem Docker-Image ab Relution 26.4 folgende Fehlermeldung:
INFO: Source pre-run script from /opt/relution/selfsigned/trust_selfsigned.sh
cp: cannot create regular file '/etc/pki/ca-trust/source/anchors/': No such file or directory
Script
# !/bin/bash
cp /opt/selfsigned/CAcert.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust
echo "Self-signed CA certificate has been added to OS trust store"
Als Nächstes müssen in der docker-compose.yml das Script und das Zertifikat gemountet werden.
Script und Zertifikat mounten
services:
relution:
environment:
...
- RELUTION_PRERUN_SCRIPT=/opt/selfsigned/trust_selfsigned.sh
...
volumes:
- './application.yml:/opt/relution/application.yml'
- './selfsigned:/opt/selfsigned'
Ausgabe des Curl
Die Funktion kann mit einem CURL getestet werden.
[root@d4b846425890 relution]# curl -I https://selfsigned.server.relution.io
HTTP/1.1 302 Found
Date: Tue, 21 Sep 2021 12:37:10 GMT
Server: Apache/2.4.38 (Univention)
Location: https://selfsigned.server.relution.io/portal/
Content-Type: text/html; charset=iso-8859-1