Hintergrund
If you run Simplifier Instances using self signed certificates, or certificates issued by a Certification Authority which is not part of the usual trusted ones, you will get an error when you try to transport a package from one environment to another.
For connectors, there is a certificate management implemented in the user interface. You can use this to upload certificates of REST, SOAP or OData V2 services you want to connect to using Simplifier connectors.
These certificates cannot be used for the transport system. To make the transport system work with certificates of a custom CA, you need to manually import the necessary certificates in a so-called trust store. This needs to be done on the server CLI, as described in this article.
Überblick
Die folgenden Schritte müssen durchgeführt werden:
- Set up custom trust store on permanent storage
- Import neccessary certificates (root and intermediates)
- Change JVM arguments to use custom trust store
- Restart Simplifier
1. Richten Sie einen benutzerdefinierten Trust Store für den permanenten Speicher ein
Grundlage für den benutzerdefinierten Trust Store ist der Standard-Truststore, der bereits eine breite Palette vertrauenswürdiger Autoritäten enthält.
Melden Sie sich am Terminal des Hosts an, auf dem Simplifier ausgeführt wird.
Ermitteln Sie den Containernamen der Simplifier-Instanz, die Sie ändern möchten.
Es muss sich um einen Container handeln, der auf dem Image simplifierag/simplifier basiert.
Öffnen Sie ein interaktives Terminal innerhalb des Containers:
docker exec -it simplifier /bin/bash
Alle folgenden Befehle müssen in diesem Container und nicht auf dem Host ausgegeben werden.
Erstellen Sie einen neuen Ordner für den Trust Store:
mkdir /opt/simplifier/data/conf/certs
Kopieren Sie den Standardvertrauensspeicher in den neu erstellten Ordner.
Für Simplifier 8:
cp /usr/lib/jvm/temurin-8-jdk-amd64/jre/lib/security/cacerts /opt/simplifier/data/conf/certs
Für Simplifier 8 EHP 1 oder neuer:
cp /usr/lib/jvm/graalvm-community-openjdk-20.0.1+9.1/lib/security/cacerts /opt/simplifier/data/conf/certs
2. Notwendige Zertifikate importieren
Zunächst müssen die Zertifikate auf den Host kopiert werden.
Bitte verwenden Sie scp, FileZilla oder ein anderes Tool Ihrer Wahl, um sich mit dem Host zu verbinden, auf dem Simplifier läuft, und kopieren Sie die Zertifikate dorthin, z.B. in den Ordner /home/myUser (bitte passen Sie diesen Pfad an Ihre Umgebung an).
Bitte beachten Sie, dass Sie das Root-Zertifikat sowie alle Zwischenzertifikate benötigen.
Nun sollten alle Zertifikate in /home/myUser abgelegt werden.
Im nächsten Schritt werden die Zertifikate in den in Schritt 1 erstellten Ordner kopiert.
Der Ordner /opt/simplifer/data/conf/certs wurde aus dem Container erstellt.
Der entsprechende Pfad auf dem Host hängt von Ihrem Setup ab.
Wenn Sie unsere Empfehlungen während des Setups befolgt haben, lautet dieser entsprechende Pfad /var/lib/simplifier/data/conf/certs (für Simplifier 8) oder /var/lib/simplifier/simplifier/conf/certs (für Simplifier 8 EHP 2).
Vereinfacher 8:
cp /home/myUser/*.crt /var/lib/simplifier/data/conf/certs/
Simplifier 8 EHP 1 oder neuer
cp /home/myUser/*.crt /var/lib/simplifier/simplifier/conf/certs/
Nun wird der Import vorbereitet.
Der Import muss aus dem Container heraus erfolgen.
Stellen Sie eine Verbindung mit dem Container her (der Name des Containers hängt von Ihrem Setup ab):
docker exec -it simplifier /bin/bash
Für den Import von Zertifikaten wird ein Tool namens keytool verwendet.
Wechseln Sie zu dem Ordner, in dem Sie die Zertifikate und den kopierten Vertrauensspeicher abgelegt haben:
cd /opt/simplifier/data/conf/certs
Überprüfen Sie, ob alle erwarteten Dateien vorhanden sind:
ls -l
Dieser Befehl sollte cacerts und eine oder mehrere Zertifikatsdateien anzeigen.
Nun kann der eigentliche Import durchgeführt werden:
keytool -import -trustcacerts -alias [name in keystore] -file [file name] -keystore ./cacerts
Wiederholen Sie diesen Befehl für jedes Zertifikat, das Sie importieren möchten.
3. Ändern Sie JVM-Argumente, um den benutzerdefinierten Truststore zu verwenden
Um Simplifier zu informieren, den neuen Trust Store zu verwenden, muss er zu den Argumenten hinzugefügt werden, die an die JVM übergeben werden.
Es gibt mehrere Möglichkeiten, dies zu erreichen.
Welche Sie verwenden sollten, hängt von Ihrem Setup ab.
docker compose default setup
Die meisten Einstellungen können in .env geändert werden. In diesem Fall ist es nicht möglich, aber die docker compose YAML-Datei muss angepasst werden. Öffnen Sie simplifer-standalone.yml (Simplifier 8) oder docker-compose.yml (Simplifier 8 EHP 2) in einem Texteditor.
Suchen Sie nach der Zeile:
- JVM_PARAMETER=-Xmx${SIMPLIFIER_JVM_HEAP_GB}g -Xms2g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:-UseGCOverheadLimit -Xss256m
Standardmäßig ist dies Zeile 50.
Fügen Sie am Ende der Zeile Folgendes hinzu:
-Djavax.net.ssl.trustStore=/opt/simplifier/data/conf/certs/cacerts
Environment Variable
Sie können eine Umgebungsvariable mit dem Namen
JVM_PARAMETER
Wenn Sie diese Variable bereits definiert haben, fügen Sie einfach
-Djavax.net.ssl.trustStore=/opt/simplifier/data/conf/certs/cacerts
am Ende.
Wenn Sie diese Variable zum ersten Mal definieren, müssen Sie sie mit dem Standardwert und dem Pfad zum Trust Store initialisieren:
-Xmx8g -Xms2g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:-UseGCOverheadLimit -Xss256m -Djavax.net.ssl.trustStore=/opt/simplifier/data/conf/certs/cacerts
jvm.arg file
Wenn Sie bereits eine Datei jvm.arg verwenden, bearbeiten Sie sie und fügen Sie am Ende des aktuellen Inhalts Folgendes hinzu:
-Djavax.net.ssl.trustStore=/opt/simplifier/data/conf/certs/cacerts
Wenn Sie noch keine jvm.arg-Datei verwenden, implementieren Sie diese bitte mit einer der beiden anderen Möglichkeiten.
4. Starten Sie Simplifier neu
Um diese Änderungen in die Tat umzusetzen, muss Simplifier gestoppt und neu gestartet werden.
Für docker compose:
docker compose -f [...] down docker compose -f [...] up -d
Wenn Sie die Datei jvm.arg verwendet haben, reicht ein Neustart aus:
docker restart simplifier
Bitte passen Sie den Containernamen an Ihr Setup an.
Starten Sie für jede andere Bereitstellung/Orchestrierung den Simplifier-Container neu oder erstellen Sie ihn neu.
Stellen Sie sicher, dass Sie eine Methode auswählen, die sicherstellt, dass die in Schritt 3 vorgenommenen Änderungen berücksichtigt werden.