Server konfigurieren

Bevor du den Server startest, musst du ihn konfigurieren. Für unsere Testinstallation verwenden wir eine Minimalkonfiguration. Öffne dazu die Datei configuration.xml und bearbeite sie wie folgt:

 1<?xml version="1.0" encoding="UTF-8" ?>
 2<Configuration
 3        version="1"
 4        xmlns="http://educateit.ch/software/BlueStone/Configuration/1">
 5
 6    <Module name="Application">
 7        <Value name="sslProfile">server</Value>
 8        <List name="secrets">
 9            <ListEntry>
10                <Value name="label">test_server</Value>
11                <Value name="key">[Dein Schlüssel]</Value>
12                <Value name="secret">[Dein Secret]</Value>
13                <Value name="authorizedNetworks">127.0.0.1/8</Value>
14            </ListEntry>
15        </List>
16    </Module>
17
18    <Module name="SSL">
19        <List name="profiles">
20            <ListEntry>
21                <Value name="identifier">server</Value>
22                <Value name="key">●thisDirectory●/server.key</Value>
23                <Value name="keyAlgorithm">RSA</Value>
24                <Value name="caCertificates">●thisDirectory●/ca.crt</Value>
25                <Value name="localCertificateChain">●thisDirectory●/server.crt</Value>
26                <Value name="peerVerificationEnabled">Yes</Value>
27                <Value name="ignoreHostNameMismatch">Yes</Value>
28            </ListEntry>
29        </List>
30    </Module>
31
32    <Module name="Log">
33        <List name="FileWriter">
34            <ListEntry>
35                <Value name="LogFilePath">C:/Test/Logs/AssistantServer.log</Value>
36                <Value name="LevelFilter">Trace</Value>
37                <Value name="Rotation">Daily</Value>
38            </ListEntry>
39        </List>
40    </Module>
41
42    <SearchDirectory>conf</SearchDirectory>
43    <!-- Nicht benötigte Konfigurationsdateien sind auskommentiert -->
44    <IncludeFile>KillProcess.conf_b.xml</IncludeFile>
45    <!-- <IncludeFile>AdActions.conf_b.xml</IncludeFile>-->
46    <!-- <IncludeFile>KillSession.conf_b.xml</IncludeFile>-->
47    <!-- <IncludeFile>ProcessMonitor.conf_b.xml</IncludeFile>-->
48    <!-- <IncludeFile>UserProfile.conf_b.xml</IncludeFile>-->
49    <!-- <IncludeFile>VDIActions.conf_b.xml</IncludeFile>-->
50
51</Configuration>

Bemerkung

Falls du das erste Mal mit unserem Konfigurationssystem arbeitest und verstehen möchtest, was die einzelnen Blöcke bedeuten, findest du alle Details im Kapitel Konfigurationssystem. Für diese Testinstallation reicht es jedoch, die Konfiguration wie oben gezeigt zu übernehmen.

Im Folgenden gehen wir die einzelnen Bereiche der Konfiguration detaillierter durch.

SSL-Konfiguration

Im Modul SSL kannst du beliebig viele SSL-Profile definieren. Jedes Profil erhält einen eindeutigen Bezeichner, über den es in anderen Konfigurationsbereichen referenziert werden kann. In unserem einfachen Beispiel erstellen wir eine einzelne Konfiguration mit dem Bezeichner server.

<Module name="SSL">
    <List name="profiles">
        <ListEntry>
            <Value name="identifier">server</Value>
            <Value name="key">●thisDirectory●/server.key</Value>
            <Value name="keyAlgorithm">RSA</Value>
            <Value name="caCertificates">●thisDirectory●/ca.crt</Value>
            <Value name="localCertificateChain">●thisDirectory●/server.crt</Value>
            <Value name="peerVerificationEnabled">Yes</Value>
            <Value name="ignoreHostNameMismatch">Yes</Value>
        </ListEntry>
    </List>
</Module>
Erklärung der einzelnen Werte
  • profiles
    → Liste der definierten SSL-Profile. Du kannst hier mehrere Profile anlegen.
  • identifier
    → Eindeutiger Bezeichner für das Profil, über den es in anderen Konfigurationsbereichen referenziert werden kann.
  • key
    → Pfad zur Datei mit dem privaten Schlüssel des Zertifikats im PEM-Format.
  • keyAlgorithm
    → Falls der Algorithmus des Schlüssels nicht automatisch erkannt wird, kannst du ihn hier explizit festlegen.
  • caCertificates
    → Pfad zu einer Datei mit allen Certification Authority (CA)-Zertifikaten im PEM-Format, die zur Überprüfung des Gegenübers verwendet werden. Falls dieser Wert nicht gesetzt ist, werden alle systemweit gültigen CAs akzeptiert.
  • localCertificateChain
    → Pfad zur Datei mit dem Server-Zertifikat im PEM-Format. Das Zertifikat selbst muss an erster Stelle stehen, gefolgt von möglichen Zwischenzertifikaten (zwischen der CA und dem Zertifikat).
  • peerVerificationEnabled
    → Gibt an, ob das Zertifikat der Gegenstelle (Peer) überprüft wird. Der Standardwert ist Yes. Wir haben ihn in die Beispielkonfiguration aufgenommen, um dies zu verdeutlichen.
  • ignoreHostNameMismatch
    → Standardwert Yes. Unsere Anwendungen überprüfen normalerweise den Hostnamen im Zertifikat nicht. Falls deine Umgebung gültige Zertifikate mit korrektem Hostnamen verwendet, solltest du diesen Wert auf No setzen.

Weitere Details zu diesen und zusätzlichen Werten findest du im Kapitel Eigene SSL Zertifikate verwenden.

Diese Konfiguration legt die Pfade zu den zuvor erstellten Schlüsseln und Zertifikaten fest. Der Platzhalter ●thisDirectory● verweist dabei auf das Verzeichnis, in dem sich die Konfigurationsdatei befindet.

Logging-Konfiguration

Das Modul Log ermöglicht die Konfiguration der Protokollierungseinstellungen.

1<Module name="Log">
2    <List name="FileWriter">
3        <ListEntry>
4            <Value name="LogFilePath">C:/Test/Logs/AssistantServer.log</Value>
5            <Value name="LevelFilter">Trace</Value>
6            <Value name="Rotation">Daily</Value>
7        </ListEntry>
8    </List>
9</Module>
Erklärung der einzelnen Werte
  • FileWriter
    → Hier legst du fest, welche Logdateien geschrieben werden sollen. Du kannst mehrere Einträge definieren, z. B. für unterschiedliche Log-Level oder Zielpfade.
  • LogFilePath
    → Pfad und Dateiname der Logdatei. Stelle sicher, dass dieser Ort auf deinem System existiert und beschreibbar ist.
  • LevelFilter
    → Bestimmt, welche Logeinträge gespeichert werden. Mit Trace erhältst du die detaillierteste Ausgabe – ideal für Test- und Debugzwecke.
  • Rotation
    → Steuert, wann neue Logdateien erstellt werden. Mit dem Wert Daily beginnt das System jeden Tag eine neue Datei.

Achte darauf, dass der im Wert LogFilePath angegebene Pfad zu einem existierenden und beschreibbaren Verzeichnis führt. Falls erforderlich, passe ihn für deine Tests entsprechend an.

Durch das Setzen von LevelFilter auf Trace aktivieren wir zusätzliche Diagnoseinformationen, die bei der Fehlersuche und Systemanalyse hilfreich sind.

Mit Daily im Wert Rotation wird die Logdatei automatisch täglich rotiert, sodass die Protokolle übersichtlich bleiben.

Bemerkung

Das Logging-System wird von nahezu allen unseren Anwendungen verwendet und ist sehr flexibel aufgebaut. Die in dieser Einführung gezeigte Konfiguration eignet sich gut für eine Testumgebung.

Für produktive Umgebungen bietet das System umfangreiche Möglichkeiten, die Logausgabe anzupassen – du kannst z. B. bestimmte Inhalte filtern, die Ausgabe in verschiedene Dateien aufteilen oder eigene Formate definieren.

Alle Details dazu findest du im Kapitel Log-System.

Anwendungskonfiguration

Das Modul Application dient zur Konfiguration der Anwendung – in unserem Fall des Assistant-Servers.

 1<Module name="Application">
 2    <Value name="sslProfile">server</Value>
 3    <List name="secrets">
 4        <ListEntry>
 5            <Value name="label">test_server</Value>
 6            <Value name="key">[Dein Schlüssel]</Value>
 7            <Value name="secret">[Dein Secret]</Value>
 8            <Value name="authorizedNetworks">127.0.0.1/8</Value>
 9        </ListEntry>
10    </List>
11</Module>

Da wir hier nur die notwendigsten Einstellungen vornehmen, werden alle übrigen Werte auf ihre Standardwerte gesetzt. Wichtig ist, dass ein gültiges SSL-Profil angegeben wird. Indem du sslProfile auf server setzt, verweist du auf das gleichnamige Profil, das im SSL-Modul konfiguriert wurde.

Mindestens ein Secret muss konfiguriert werden. Ein Secret ist eine Art Zugangsdatenpaar, ähnlich einem Benutzernamen und Passwort, jedoch für die Authentifizierung zwischen Systemen. Es sollte mit derselben Sorgfalt behandelt werden wie ein reguläres Passwort. In der Beispielkonfiguration sind Platzhalter für den Schlüssel ([Dein Schlüssel]) und das Secret ([Dein Secret]) eingefügt. Wie du ein sicheres Secret erzeugst, erklären wir im nächsten Abschnitt.

Erstellen und Einfügen eines neuen Secret-Paars

Für die Authentifizierung des Clients am Server wird ein gültiges Secret-Paar benötigt. Starte dazu die Anwendung Secret Generator und stelle sicher, dass du die aktuelle Version verwendest (mindestens Version 1.4).

Gib im Feld Label: den Wert test_server ein und trage im Feld Authorized Networks 127.0.0.1/8 ein. Das Häkchen bei Limit key characters… sollte nicht gesetzt sein. Bei Version: wähle Version 2 aus.

Nachdem du alle Eingaben vorgenommen hast, klicke auf Generate New Key-Pair, um ein neues Secret-Paar zu erzeugen.

../../../_images/secret-generator.jpg

Die Oberfläche der Anwendung Secret Generator nach der Generierung eines Secret-Paars.

Im unteren Bereich der Anwendung findest du nun die generierten Schlüsselpaare für den Client und den Server. Kopiere den <ListEntry>-Abschnitt aus dem Bereich Server Configuration und füge ihn in die Konfigurationsdatei ein. Das sollte dann in etwa so aussehen:

Die Konfiguration mit dem kopierten Secret für den Server.
 1<Module name="Application">
 2    <Value name="sslProfile">server</Value>
 3    <List name="secrets">
 4        <ListEntry>
 5            <Value name="label">test_server</Value>
 6            <Value name="key">3!2Y(...)NKn</Value>
 7            <Value name="secret">)ZYFr(...)Z/Q== V2</Value>
 8            <Value name="authorizedNetworks">127.0.0.1/8</Value>
 9        </ListEntry>
10    </List>
11</Module>

Zur besseren Lesbarkeit wurden die Schlüssel durch den Platzhalter (...) gekürzt. In deiner Konfiguration sollte der Wert key etwa 64 zufällige Zeichen umfassen, während secret ungefähr 150 Zeichen lang ist.

Schliesse das Anwendungsfenster noch nicht! Später in dieser Anleitung werden wir das Secret für den Client aus den entsprechenden Feldern kopieren.

Bemerkung

Das auf der Serverseite gespeicherte Secret lässt sich am besten mit einem Passwort-Hash in klassischen Benutzername/Passwort-Systemen vergleichen – allerdings in deutlich sichererer Form. Aus dem auf dem Server gespeicherten Wert kann keinerlei Rückschluss auf das tatsächliche Client-Secret gezogen werden.

Technisch handelt es sich um einen gesalzenen 512-Bit SHA3-Hash, der neben dem Client-Secret auch einen langen Salt sowie einen internen Schlüssel enthält.

Dadurch ist das gespeicherte Secret bereits von Haus aus sehr gut abgesichert und muss nicht zusätzlich verschlüsselt werden. Selbst wenn eine unbefugte Person Zugriff auf die Serverkonfiguration mit der Secret-Liste erhält, ist es ihr nicht möglich, das ursprüngliche Secret zu rekonstruieren.

Dennoch gilt natürlich: Die Serverkonfiguration muss geschützt bleiben – stelle sicher, dass die Datei mit passenden Berechtigungen abgesichert ist.

Weitere Informationen zum Secret-System findest du im Kapitel Das Secret System.

Über die Erweiterungskonfigurationen

Der letzte Block in der Konfiguration bindet die Konfigurationsdateien für die verfügbaren Erweiterungen ein. Nur Erweiterungen, die hier explizit eingebunden sind, stehen dem Client zur Verfügung.

Im Unterverzeichnis conf findest du Beispielkonfigurationen für alle Standard-Erweiterungen des Assistant-Servers.

<SearchDirectory>conf</SearchDirectory>
<!-- Nicht benötigte Konfigurationsdateien sind auskommentiert -->
<IncludeFile>KillProcess.conf_b.xml</IncludeFile>
<!-- <IncludeFile>AdActions.conf_b.xml</IncludeFile>-->
<!-- <IncludeFile>KillSession.conf_b.xml</IncludeFile>-->
<!-- <IncludeFile>ProcessMonitor.conf_b.xml</IncludeFile>-->
<!-- <IncludeFile>UserProfile.conf_b.xml</IncludeFile>-->
<!-- <IncludeFile>VDIActions.conf_b.xml</IncludeFile>-->

In unserem Beispiel ist nur die Erweiterung KillProcess aktiviert – alle anderen IncludeFile-Direktiven sind auskommentiert. Das bedeutet, dass im Testbetrieb ausschliesslich die Aktionen der Erweiterung KillProcess verfügbar sind.

Wenn du weitere Funktionen testen möchtest, kannst du einfach die entsprechenden Zeilen einkommentieren und die zugehörige Erweiterung auf dem Server korrekt konfigurieren.

Lies weiter: Lizenz aktivieren →