Cloud Server: Bereitstellung und Sicherheit

Produktlinien: Standard, Expert
Module: Leistung & CRM
Erstellt: 04.03.2016, Änderung:
Installation/Registrierung des Dienstes am Anfang des Artikels eingefügt.
Mehr ansehen

Die Cloud App und die Web App sind Cloud Clients. Hier läuft die exakt gleiche Business-Logik auf einem Applikationsserver, die Oberfläche wird ebenfalls auf dem Server aufbereitet und die Cloud Clients stellen diese nur dar und empfangen den User-Input. Für die Bereitstellung ist der Vertec Cloud Server zuständig.

Installation des Vertec Cloud Server

Normalerweise ist der Vertec Cloud Server vom Setup bereits installiert. Falls Sie den Dienst manuell installieren möchten, z.B. auf einem anderen Server, gehen Sie vor wie nachstehend beschrieben.Der Vertec Cloud Server wird normalerweise auf dem Vertec Server-Rechner installiert (Rechner auf dem sich das Vertec Installationsverzeichnis und der Datenbankserver befindet). Der Betrieb auf einem separaten Rechner ist ebenfalls möglich, sofern dieser Zugriff zum Datenbank Server hat. Bei Installation auf einem separaten Server muss ein Vertec Programmverzeichnis manuell erstellt werden (z.B. C:\Programme (x86)\Vertec), bei Installation auf dem Vertec Server-Rechner ist dies bereits vorhanden. Die folgenden Files werden für den Betrieb des Vertec Cloud Server benötigt:

  • Vertec.CloudServer.exe
  • Vertec.ini
  • VertecLib.dll
  • Vertec.mld
  • GDS32.dll (es muss eine Client-Installation von Firebird vorhanden sein bzw. ein MS SQL-Server Client, falls Sie mit diesem Datenbankserver arbeiten).

Vertec Cloud Server als Dienst registrieren

Damit der Vertec Cloud Server als Windows Dienst läuft, muss dieser bei Windows registriert werden. Dies geschieht von der Kommandozeile aus mit dem Befehl:

Vertec.CloudServer.exe /install

Das Starten des Dienstes geschieht via Dienste Kontrollfeld oder von der Kommandozeile:

net start Vertec.CloudServer

Mehrere Vertec Cloud Server Dienste

Sie können auf einem Rechner auch mehrere verschiedene Vertec Cloud Server Dienste laufen lassen. Für das genaue Vorgehen siehe den Artikel über mehrere Vertec.CloudServer Instanzen.

Starten des Vertec Cloud Server Dienstes als normale Applikation

Zu Testzwecken kann es nützlich sein, den Vertec Cloud Server statt als Windows Dienst als normale Applikation zu starten. Dies ist möglich durch Aufruf von Vertec.CloudServer.exe mit dem Parameter /noservice:

Vertec.CloudServer.exe /noservice

TLS Verschlüsselung der Verbindung zum Vertec Cloud Server

Die Verbindung zum Vertec Cloud Server kann über TLS (ehemals SSL) geschützt werden.

Es gibt folgende Möglichkeiten, den Vertec Cloud Server zu betreiben:

  • Unverschlüsselt (Standard)
  • Verschlüsselt mit einem selbst ausgestellten Zertifikat
  • Verschlüsselt mit einem echten Zertifikat von einer Zertifizierungsstelle (empfohlen)
  • Via Vertec Webaccess

Um sicherzustellen, dass der Client (Cloud App oder Web App) mit dem echten Server kommuniziert, muss sich der Server korrekt ausweisen können. Ein "Ausweis" für den Server wird Zertifikat genannt und normalerweise von einer öffentlich anerkannten Zertifizierungsstelle (CA) gegen Entgelt ausgestellt.

Bei einer verschlüsselten Verbindung ist der Server dazu verpflichtet, sich ausweisen zu können. Aus diesem Grund besitzt der Vertec.CloudServer die Möglichkeit, sich selbst ein Zertifikat auszustellen, welches aber nicht öffentlich anerkannt ist. Die Verbindung ist dann verschlüsselt, nur der Server ist nicht verifiziert. Das ist besser als eine unverschlüsselte Verbindung, wir empfehlen aber die Verwendung eines echten Zertifikats.

Unverschlüsselter Betrieb

Im unverschlüsselten Betrieb ist kein Zertifikat nötig. Wenn in der Einstellung Secure Server Port im Vertec.ini-File kein Wert gesetzt ist (Standard), startet der Server unverschlüsselt. Dies eignet sich nur für den Betrieb im LAN bzw. via VPN im LAN.

TLS Betrieb über ein selbst ausgestelltes Zertifikat

Falls die geschützte Verbindung mit selbst ausgestelltem Zertifikat gewählt wird, ist die Verbindung zwar gegen aussen geschützt, es kann allerdings nicht sichergestellt werden, ob die Verbindung auch wirklich mit dem Server aufgebaut wurde (Man-in-the-Middle-Angriff). Die Cloud App wird deshalb beim ersten Verbindungsaufbau fragen, ob dem Server vertraut werden soll, und erst wieder nachfragen, falls sich an der Verbindung etwas ändert (Beispielsweise ein neues Zertifikat ausgestellt wurde).

Beim Besuch des Vertec Portals für Cloud Clients oder der Web App wird Ihr Browser das nicht vertrauenswürdige Zertifikat bemängeln. Die Zertifikate können im Browser als vertrauenswürdig deklariert werden.

Zertifikat selbst erstellen

Um sich selbst ein Zertifikat auszustellen, kann Vertec.CloudServer.exe mit dem Kommandozeilen Parameter /certcreate gestartet werden. Das Zertifikat wird nach dem Erstellen automatisch im Windows Zertifikatsspeicher (unter EigeneZertifikate) abgelegt.

Anschliessend muss das Zertifikat an einen Port gebunden werden, siehe Abschnitt Certificate Binding weiter unten.

TLS Betrieb über ein echtes Zertifikat

Um ein echtes Zertifikat zu erhalten, muss man bei einer Zertifizierungsstelle registriert sein. Dort kann man ein Zertifikat für eine bestimmte Domain und einen bestimmten Zeitraum einkaufen.

Wie erhalte ich ein echtes Zertifikat für meinen Server?

Um sich das Zertifikat ausstellen zu lassen, sind folgende Schritte nötig:

  1. Zertifikatsregistrierungsanforderung (CSR) erstellen: Als erstes muss man auf dem Server, welcher sich anschliessend mit dem Zertifikat ausweisen soll, eine sogenannte Zertifikatsregistrierungsanforderung (CSR) erstellen. Der Vertec Cloud Server macht dies bequem über den Kommandozeilen-Parameter /csrcreate. Eine Konsole öffnet sich und fragt einige Angaben zum Zertifikat ab. Anschliessend wird die Zertifikatsregistrierungsanforderung im Ordner des Vertec Cloud Servers unter dem gewählten Namen abgespeichert.
  2. Erhalten des Zertifikates: Die generierte Textdatei (PKCS#10), kann nun bei einer Zertifizierungsstelle hochgeladen werden. Im Gegenzug liefert diese das erwartete Zertifikat für den Server. Wir empfehlen, das Zertifikat im .p7b Format herunterzuladen und auf dem Server zu speichern.
  3. Importieren des Zertifikates in den Zertifikatsspeicher: Nun muss das Zertifikat in den Zertifikatsspeicher unter Eigene Zertifikate abgelegt werden. Es gibt mehrere Möglichkeiten dies zu tun (oftmals hat man die Möglichkeit dies mit einem Doppelklick auf das Zertifikat zu erledigen). Die Möglichkeit, welche von allen unterstützen Betriebssystemen angeboten wird, ist folgende:
    • In der Microsoft Management Console (Windows Ausführen > mmc) unter Datei > Snap-in hinzufügen / entfernen die Zertifikate auswählen und auf Hinzufügen klicken.
    • Im erscheinenden Menü Zertifikat-Snap-In das Computerkonto auswählen und fertigstellen.
    • Den neu erschienenen Eintrag Zertifikate (Lokaler Computer) auswählen und mit der rechten Maustaste auf Eigene Zertifikate klicken.
    • Im Kontextmenü unter Alle Aufgaben die Option Importieren... wählen.
    • Im Zertifikatimport-Assistent auf Weiter und mit Durchsuchen das heruntergeladene Zertifikat auswählen. In der darauffolgenden Auswahl die Option Zertifikatsspeicher automatisch auswählen wählen und mit Weiter und Fertigstellen bestätigen. Die Management Console kann anschliessend geschlossen werden.
  4. Vertec Cloud Server auf das korrekte Zertifikat verweisen: Damit der Vertec Cloud Server weiss, welches Zertifikat er benutzen soll, gibt es eine Einstellung in der Konfigurationsdatei Vertec.ini. Diese Einstellung heisst Certificate Name und muss dem Namen (FriendlyName oder CommonName des Subject) ihres Zertifikates entsprechen.Dieser Schritt kann normalerweise übersprungen werden, da beim Erstellen des CSR bereits ein Eintrag ins Vertec.ini erstellt wurde.

Anschliessend muss das Zertifikat an einen Port gebunden werden:

Certificate Binding

Damit das Zertifikat auf einem bestimmten Port angesprochen werden kann, muss es an diesen gebunden werden. Wird Vertec Cloud Server als Administrator ausgeführt, wird das automatisch beim Start erledigt. Falls etwas nicht funktioniert (weil beispielsweise keine Berechtigung dafür vorhanden ist), meldet der Vertec Cloud Server einen Fehler.

Nur falls der Vertec Cloud Server nicht von einem Benutzer mit Administrator-Rechten (z.B. LocalSystem im Normalfall) ausgeführt wird oder ein Binding Fehler aufgetreten ist, muss das Zertifikat einmalig manuell gebunden werden. Um das Zertifikat manuell zu binden, kann Vertec Cloud Server mit dem Kommandozeilen Parameter /certbind ausgeführt werden. Der Cloud Server versucht dabei das Zertifikat, welches Sie im Vertec.ini angegeben haben, auf den am gleichen Ort angegebenen Port zu binden. Falls dies fehlschlägt, gibt der Vertec Cloud Server einen Fehler aus.

Intern verwenden /certbind und /certunbind netsh. Um Zertifikat-Bindings zu inspizieren, kann der Kommandozeilen-Befehl show sslcert [ipport=]IP Address:port (siehe https://msdn.microsoft.com/en-us/library/windows/desktop/cc307243(v=vs.85).aspx) verwendet werden. Beispiel:

netsh http show sslcert ipport=0.0.0.0:443

HTTP Strict Transport Security (HSTS)

Gilt nur für den verschlüsselten Betrieb. Als eine Massnahme gegen Man-in-the-middle-Angriffe wurde im Vertec Cloud Server HSTS Support eingebaut. HSTS kann mittels Einstellung HSTS Max Age in der Konfigurationsdatei Vertec.ini aktiviert werden.

HTTP to HTTPS Redirect

Gilt nur für den verschlüsselten Betrieb. Damit nicht https:// in die Browserzeile geschrieben werden muss, werden alle HTTP Anfragen auf den im Vertec.ini angegebenen Server Port auf HTTPS Anfragen für Secure Server Port umgeleitet.

Windows hat eine priorisierte Liste von Cipher-Suites, die von Servern und Clients auf dem Rechner berücksichtigt werden (Cypher suit priority list). Diese Liste wird von Microsoft mit Windows Updates regelmässig aktualisiert, enthält aber üblicherweise aus Gründen der Rückwärtskompatibiliät auch Protokolle, die sicherheitsmässig nicht mehr top sind.

Wirklich problematische Cypher suites werden aber von Microsoft mit Updates entfernt. Im Normalfall sollte es also reichen, wenn man sich auf den Windows Standard verlässt.

Verwendung von Verschlüsselungssammlungen (cypher suites)

Bei der Verschlüsselung wird das SSL System von Microsoft verwendet. Dieses wiederum verwendet Verschlüsselungssammlungen und aktualisiert diese mittels Windows Updates. Aus Windows Rückwärtskompatibilitätsgründen werden auch Verschlüsselungskombinationen unterstützt, welche von gewissen SSL Test-Tools als unsicher eingestuft werden.

Für Installation mit höheren Sicherheitsansprüchen, die z.B. den (hohen) Anforderungen der üblichen SSL Test-Tools entsprechen möchten, bietet sich die Möglichkeit, eine eigene Priority-List von Verschlüsselungssammlungen (cypher suites) zu definieren. Diese ersetzt dann die von Microsoft gepflegte List und muss auch selbst aktualisiert werden.

Das Definieren einer eigenen cypher suite Liste geschieht im Editor für lokale Gruppenrichtlinien (gpedit.msc).

  • Klicken Sie auf Computerkonfiguration > Administrative Vorlagen > Netzwerk > SSL-Konfigurationseinstellungen.
  • Klicken Sie mit der rechten Maustaste auf Reihenfolge der SSL-Verschlüsselungssammlungen und wählen Sie Bearbeiten.
  • Im daraufhin erscheinenden Fenster können Sie eigene Richtlinien aktivieren:

Restrict Scripting

Um beim Zugriff auf lokale Ressourcen des Cloud Hosts via Cloud Clients gewisse Einschränkungen gewährleisten zu können, gibt es ab Version 6.1.0.9 eine Option, um das Scripting einzuschränken. So können Dateizugriffe und das Importieren von Nicht-Vertec-Modulen verhindert werden. Die Informationen dazu finden Sie im Artikel Scripting für Cloud-Sessions einschränken.

Cloud Server Management Console

Für den Cloud Server gibt es eine Management-Console, welche standardmässig auf dem Port 8082 läuft (Einstellung Management Port im Vertec.ini-File). Sie wird über localhost:8082 aufgerufen. Der Aufrufende muss am Server angemeldet sein und der Aufruf über localhost erfolgen. Von "aussen" ist dies nicht möglich.

Die Management Console sieht wie folgt aus:

Hier sieht man die auf Vorrat gestartete Idle Sessions (siehe Process Pool Size im Vertec.ini File) sowie alle aktuelle angemeldeten Clients.

Die Management Console bietet folgende Optionen:

  • Server Status NormalOperation / Maintenance: Per Mausklick auf das Werkzeug hinter dem Server Status kann von Normalbetrieb auf Maintenance umgestellt werden. Die bestehenden Sessions werden davon nicht tangiert, aber es können sich keine neuen Clients mehr anmelden.

  • Eine Nachricht an angemeldete Benutzer schicken: Per Klick auf das Mail-Zeichen kann den entsprechenden Session eine Nachricht geschickt werden.

  • Eine Session beenden: Jede laufende Session kann per Klick auf das X geschlossen werden. Nicht gespeicherte Änderungen des entsprechenden Benutzers gehen dabei verloren.

Problem mit Culture Behandlung (falsches Zahlenformat trotz richtiger Regionaleinstellung)

Läuft der Vertec Cloud Server als Dienst auf einem englischen Windows Server, können die Cloud Clients für Schweizer Regionen die Zahlen in einem falschen Format darstellen. Das Problem kann gelöst werden, indem der Vertec Cloud Server Dienst nicht via System, sondern als Windows User ausgeführt wird:

  1. Melden Sie sich als User mit Administratoren-Rechten beim Windows Server an
  2. In Control Panel > Clock, Language and Region > Region die gewünschte Sprache wählen:
    • French (Switzerland)
    • German (Switzerland)
    • Italian (Switzerland)
  3. In Additional Settings die Zahlenformate korrekt einstellen:
    • Numbers > Decimal symbol: .
    • Numbers > Digit grouping symbol: '
    • Currency > Decimal symbol: .
    • Currency > Digit grouping symbol: '
  4. Bei den Windows Diensten den Dienst Vertec.CloudServer stoppen
  5. In den Eigenschaften des Dienstes Log On > This Account wählen und die Login-Koordinaten des aktuellen Window Users eingeben
  6. Den Dienst Vertec.CloudServer neu starten