Hauptmenü

Eigene TLS-Zertifikate in KIX-Backend-Container einbauen

Begonnen von Benedikt Geißler, 01.02.2024 09:09:10

⏪ vorheriges - nächstes ⏩

Benedikt Geißler

Hallo zusammen,

im Zusammenhang mit KIX-Connect oder der Migration von einem KIX17-System kann es vorkommen, dass auf den jeweiligen Fremdsystemen (aus Sicht des KIX18-Systems) HTTPS mit selbst signierten Zertifikaten eingerichtet ist. In diesem Fall schlagen dann Jobs, die Verbindungen dorthin aufbauen, unter Umständen fehl. Grundsätzlich ist der Sinn von TLS bzw. HTTPS, eine vertrauenswürdige Verbindung herzustellen. Mit selbst signierten Zertifikaten ist die Voraussetzung dafür erstmal nicht gegeben. Die Root-Zertifikate der einschlägig ,,anerkannten" CAs liegen üblicherweise bereits im Trust Store der Distributionen, bei eigenen CAs sind noch weitere Schritte nötig. Hier ist eine Erklärung dazu, wie ihr die eigene Root-CA bzw. das selbst signierte Zertifikat den Backend-Container einbauen könnt:

Zunächst kopiert ihr das Root-Zertifikat der CA zu einem bestimmten Pfad auf den Server, wo KIX18 läuft – evtl. habt ihr diese aber auch schon irgendwo dort liegen. Anschließend ergänzt ihr in der Datei docker-compose.yml bei "backend:" einen Eintrag wie den folgenden unterhalb "volumes:", Einrückung beachten:
- /pfad/zum/rootzertifikat.crt:/usr/local/share/ca-certificates/eigenes-rootzertifikat.crt
Screenshot dazu, wie es aussehen sollte:
Bildschirmfoto vom 2024-01-08 17-58-52.png

Ein ähnlicher Eintrag wäre auch für das Intermediate-Zertifikat nötig, wenn vorhanden. Wichtig ist die Endung ".crt" und dass das Zertifikat im base64-codierten PEM-Format vorliegt. Eine Konvertierung aus dem binären DER-Format ließe sich etwa mittels
openssl x509 -inform DER -in certificate.cer -out certificate.crt
vornehmen.

Durch die soeben vorgenommenen Einträge werden die Zertifikate bei Stack-Neustarts in den Container eingebunden. Im laufenden Betrieb könnt ihr dies auch mittels
docker cp /pfad/zum/rootzertifikat.crt kix-backend-1:/usr/local/share/ca-certificates/eigenes-rootzertifikat.crt
durchführen. Es kann sein, dass der Container bei euch kix_backend_1 heißt. Anschließend ist innerhalb des Containers das Skript "update-ca-certificates" auszuführen. Dies geht mittels
docker exec -iu0 kix-backend-1 update-ca-certificates
Hier ist übrigens auch die Manpage zum zuletzt genannten Befehl: https://manpages.ubuntu.com/manpages/jammy/man8/update-ca-certificates.8.html

Damit dieser letztgenannte Schritt nicht jedes Mal beim Starten des Stacks durchgeführt werden muss, empfiehlt es sich, diesen Befehl in das Skript ./start.sh ganz ans Ende einzubauen.

Viele Grüße
Benedikt