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
-
Grundlegende Kenntnisse in der Server- und Client-Administration sind vorhanden.
-
Vorhandene Linux-Installation nach Installation auf Linux-Systemen.
Schritt 1 von 4: Anpassung für TLS
-
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.
-
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:
{
"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:
sudo cp server.crt /etc/pki/ca-trust/source/anchors # Hinweis: Dateierweiterung “crt” ist notwendig
sudo update-ca-trust
openSUSE/SUSE:
sudo cp server.pem /usr/share/pki/trust/anchors # Hinweis: Dateierweiterung “pem” ist notwendig
sudo update-ca-certificates
Debian/Ubuntu:
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
-
Erweitern Sie unter /etc/systemd/system die .service-Dateien für Innovator-Dienste, um:
KopierenEnvironment=INO_TLS_USE=1
Environment=INO_TLS_CONFIG_PATH=/certs/tlsConfig.json -
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}" \ -
Lesen Sie anschließend die Dienste neu ein:
Kopierensudo systemctl daemon-reload
-
Starten Sie die Dienste neu.
Nutzung von OpenSSL-Kommandos (Optional)
Folgende OpenSSL-Kommandos können behilflich sein:
-
Private Key extrahieren
Kopierenopenssl pkcs12 -in cert.pfx -nocerts -nodes -out key.pem
-
Zertifikat extrahieren
Kopierenopenssl pkcs12 -in cert.pfx -clcerts -nokeys -out cert.pem
-
.pfx-Datei erstellen
Kopierenopenssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem
-
Zertifikat anzeigen
Kopierenopenssl x509 -in cert.pem -noout -text
-
Java Keystore für Server-Rechner erstellen
Kopierenkeytool -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
Kopierenkeytool -importkeystore -srckeystore /certs/cert.pem -srcstoretype
pkcs12 -destkeystore /users/opensuse150/java/jdk-
17.0.2/lib/security/cacerts