TLS-verschlüsselte Verbindungen unter Linux einrichten

Innovator stellt die Möglichkeit einer TLS-verschlüsselten Kommunikation zwischen Server- und Client-Anwendungen zur Verfügung.
Dieses Hilfethema beschreibt die Einrichtung von TLS für Linux.
Unter TLS-verschlüsselte Verbindungen unter Windows einrichten finden Sie das Vorgehen für Windows.

Voraussetzungen

Schritt 1 von 4: Anpassung für TLS

  1. Die Umgebungsvariable INO_TLS_USE setzen

    Setzen Sie die Umgebungsvariable INO_TLS_USE mit dem Wert 1 in der Shell oder in den .service-Dateien für Innovator-Dienste.

  2. Für den Betrieb von Server-Anwendungen die Umgebungsvariable INO_TLS_CONFIG_PATH setzen

    Erstellen Sie die Konfigurationsdatei tlsConfig.json in einem dedizierten Verzeichnis und passen Sie die Pfade und Passwörter an Ihre Systemumgebung an. (Sehen Sie hierfür: "Schritt 2 von 4: Erstellung der Konfigurationsdatei")

    Setzen Sie die Umgebungsvariable INO_TLS_CONFIG_PATH mit vollem Pfadnamen zur Konfigurationsdatei tlsConfig.json als Wert oder in den .service-Dateien für Innovator-Dienste.

 

Schritt 2 von 4: Erstellung der Konfigurationsdatei

Um eine Server-Anwendung für die TLS-Verschlüsselung vorzubereiten, muss eine Konfigurationsdatei angelegt und an die Systemumgebung angepasst werden.

Die Konfigurationsdatei (tlsConfig.json) muss dabei folgende Struktur haben:

Kopieren
Konfigurationsdatei "tlsConfig.json"
{
   "trustStore": {
       "path": "/users/java/jdk-17.0.2/lib/security/cacerts",
       "storeType": "JKS",
       "password": "changeit"
   },
    "keyStore": {
        "path": "/certs/keystore.p12",
        "storeType": "PKCS12",
        "password": "changeit"
    },
    "certificate": {
        "pfx": {
            "path": "/certs/server.pfx",
            "password": "123456-"
        },
        "certPath": "/certs/server.pem",
        "privateKey": {
            "path": "/certs/server.pem"
        }
    }
}

 

keyStore:

Spezifiziert den zu verwendenden Keystore für Java-Anwendungen.

  • Path: Gibt den Pfad zur Datei an, die die Zertifikate des Servers enthält. Im Beispiel ist das: "C:/Users/Public/Documents/Innovator/16.0/inocert/keystore.p12".

  • storeType: PKCS12 ist ein verbreitetes Format für Zertifikatsdateien.

  • password: Passwort für den Zugriff auf den Keystore.

 

certificate:

Spezifiziert die zu verwendenden Zertifikatsdateien für C- und .NET-Anwendungen.

  • pfx: Ein .pfx-Dateiformat (PKCS#12) enthält sowohl das Zertifikat als auch den privaten Schlüssel.

  • path: Gibt den Pfad zur .pfx-Datei an.

  • password: Passwort für den Zugriff auf die .pfx-Datei.

  • certPath: Gibt den Pfad zu einer PEM-Datei an, die das Zertifikat enthält.

  • privateKey:

    path: Gibt den Pfad zur Datei an, die den privaten Schlüssel enthält (PEM-Format)

 

Schritt 3 von 4 (optional): Anpassung für den Betrieb von Client-Anwendungen

Sollte sich das Zertifikat des Serverrechners nicht in einer gültigen Zertifikatskette (Root, Intermediate) auf den Client-Systemen befinden, müssen Sie das Server-Zertifikat hinterlegen. Dabei ist das Vorgehen je nach Linux-Distribution unterschiedlich.

Zertifikate in den openSSL-Truststore von Linux aufnehmen

Exemplarisch werden die drei wichtigsten Distributionen aufgeführt.

Red Hat/CentOS/Fedora:

Kopieren
sudo cp server.crt /etc/pki/ca-trust/source/anchors # Hinweis: Dateierweiterung “crt” ist notwendig
sudo update-ca-trust

openSUSE/SUSE:

Kopieren
sudo cp server.pem /usr/share/pki/trust/anchors # Hinweis: Dateierweiterung “pem” ist notwendig
sudo update-ca-certificates

Debian/Ubuntu:

Kopieren
sudo cp server.crt /usr/local/share/ca-certificates # Hinweis: Dateierweiterung “crt” ist notwendig
sudo update-ca-certificates

 

Schritt 4 von 4: Aktualisierung der Dienste

  1. Erweitern Sie unter /etc/systemd/system die .service-Dateien für Innovator-Dienste, um:

    Kopieren
    Environment=INO_TLS_USE=1
    Environment=INO_TLS_CONFIG_PATH=/certs/tlsConfig.json
  2. Erweitern sie in einer InoAgent.service zusätzlich die ExecStart-Anweisung :

    Kopieren
    "-Dde.mid.innovator.tlsuse=${INO_TLS_USE}" \
    "-Dde.mid.innovator.tlsconfigpath=${INO_TLS_CONFIG_PATH}" \
  3. Lesen Sie anschließend die Dienste neu ein:

    Kopieren
    sudo systemctl daemon-reload
     
  4. Starten Sie die Dienste neu.

 

Nutzung von OpenSSL-Kommandos (Optional)

Folgende OpenSSL-Kommandos können behilflich sein:

  • Private Key extrahieren

    Kopieren
    openssl pkcs12 -in cert.pfx -nocerts -nodes -out key.pem
  • Zertifikat extrahieren

    Kopieren
    openssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
  • .pfx-Datei erstellen

    Kopieren
    openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem
  • Zertifikat anzeigen

    Kopieren
    openssl x509 -in cert.pem -noout -text
  • Java Keystore für Server-Rechner erstellen

    Kopieren
    keytool -importkeystore -srckeystore /certs/cert.pfx -srcstoretype
    pkcs12 -destkeystore /certs/keystore.p12 -deststoretype pkcs12
  • Java: Zertifikat des Lizenzserver-Rechners in den Truststore des InoAgent-Rechners aufnehmen

    Kopieren
    keytool -importkeystore -srckeystore /certs/cert.pem -srcstoretype
    pkcs12 -destkeystore /users/opensuse150/java/jdk-
    17.0.2/lib/security/cacerts