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.4

Das 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_SCRIPT in der docker-compose.yml) wird aus der Konfiguration entfernt, anschließend wird der Relution-Container neu gestartet.
  • Die Anmeldung erfolgt in der globalen Organisation.
  • Unter EinstellungenZertifikate werden die gewünschten CA-Zertifikate hochgeladen (siehe Zertifikatsverwaltung →).
  • Unter EinstellungenTLS-VertrauenskonfigurationVertrauenswürdige Zertifikate werden 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
Top