In diesem Blogbeitrag geht es um die Funktionsbeschreibung des SSL-Offloadings, sowie allgemeine Konfigurationsschritte auf einer NetSclaler VPX Appliance (NetScaler ADC).
SSL Offloading (SSL acceleration)
SSL Offloading ist eine der Hauptfunktionen eines ADCs (Application Delivery Controller). Das SSL Offloading bietet die Möglichkeit die CPU-intensive Berechnung des SSL-Handshakes bei dem Verbindungsaufbau zwischen einem Client und einem Zielserver (z.B. Webserver) von einem Server auf den NetScaler (oder ähnliches) auszulagern. Der NetScaler (nur SDX/MPX) besitzt nämlich einen entsprechenden Chip und kann im Gegensatz zu einem „normalen“ System die kryptografische Berechnungen (Entschlüsseln / Verschlüsseln) CPU-schonend abarbeiten.
Der initiale Handshake und die asymmetrische Verschlüsselung sind zwei besonders rechenintensive Vorgänge. Auch die Größe des Schlüssels (1024 Bit, 2048 Bit oder 4096 Bit) spielt eine wichtige Rolle. Die mögliche Schlüsselgröße ist auf 4096Bit begrenzt.
Was ist SSL
Obwohl die Bezeichnung SSL (Secure Socket Layer) nicht mehr aktuell ist, bleibt diese immer noch weit verbreitet. Die korrekte Bezeichnung die im weiteren Text beschriebenen Technologie wäre: TLS (Transport Layer Security).
- TSL ist nicht anders als eine Weiterentwicklung des SSLs.
- TLS ist ein Authentifizierung- und Verschlüsselungsprotokoll.
- TLS dient der Sicherung der Kommunikation zwischen einem Endbenutzer und dem Zielsystem (z.B. Webserver).
- Man konnte TLS auch als eine Methode beschreiben, wie die Clients und die Server kryptografische Informationen austauschen. Die kryptografische Informationen werden in den Dateien im X.509 Format gespeichert, die man das immer noch SSL-Zertifikat nennt.
TLS Cipher Suite
Eine Cipher Suite ist eine Kombination von unterschiedlichen kryptografischen Algorithmen, die in einer bestimmten TLS-Sitzung verwendet werden. Eine Cipher Suite besteht aus vier Blöcken:
- Algorithmus zum Erzeugen von Sitzungsverschlüsselungsschlüsseln (Session Key Exchange)
- der zur Authentifizierung des Servers verwendete Algorithmus;
- richtiger symmetrischer Verkehrsverschlüsselungsalgorithmus;
- den Integritätskontrollalgorithmus (MAC, Message Authentication Code).
Die auf oberem Bild dargestellten Algorithmen zeigen nur eine mögliche Zusammensetzung. Die korrekte Zusammensetzung der Algorithmen macht aus einer Cipher Suite einer starken Cipher Suite oder einer schwachen.
Die Sicherheitsanforderung ändert sich ständig. Aus diesem Grund sollte dafür sorgt werden, dass die eingetragen Cipher Suites immer aktuell bleiben. Auf diese Seite können Sie erfahren welche Cipher Suites seitens Citrix empfohlen werden: Scoring an A+ at SSLlabs.com with Citrix NetScaler – Q2 2018 update
SSL Handshake
In einfachen Worten gefasst, lässt sich ein SSL Handshake als ein Austausch von kryptografischen Informationen bezeichnen, die als Ziel haben, einen geheimen Schlüssel festzulegen, mit denen sie untereinander kommunizieren. Der Handshake auf der Serverseite ist ein sehr berechnungsintensiver Prozess. Je größer der Schlüssel (1024 Bit, 2048 Bit, 4096 Bit), desto rechenintensiver wird es.
- SSL Handshake finden nach dem TCP Handshake statt
- Root-Zertifikat muss sich in Browser Speichert-Ort des Clients befinden
- Server-Zertifikat und Root-Zertifikat müssen sich auf dem Server befinden
Abarbeitungsreihenfolge
1. Der Client sendet Client-Hello mit dem Satz (Liste) von supporteten Cipher Suites. Die Liste, die nach Priorität sortiert ist, beinhaltet: TSL Version, die Liste der unterstützen Cipher Suites Versionen und die von Client unterstützte Kompressionsmethode.
2. Der Server sendet Server-Hello mit dem ausgewähltem Cipher Suite (z.B. wie oben abgebildet TLS 1.2) und der Server Public Key, welcher sich in dem Server-Certifikat befindet. Dies bedeutet:
- zum Generieren von Sitzungsschlüsseln wird Elliptic-Curve Diffie–Hellman verwendet.
- die Serverauthentifizierung wird mit RSA durchgeführt.
- um den Datenverkehr zu verschlüsseln, wird AES-Algorithmus mit einer Schlüssellänge von 128 Bit verwendet.
- GCM – bezieht sich auf den Punkt C und ist ein effizienter Betriebsmodus für symmetrische Blockchiffren.
3. Der Server sendet Server-Hello-Done
4. Key Exchange - der Client überprüft die Zertikat-Inhalte (Signature, Validität, Server-Name) und generiert bzw. verschlüsselt auf Basis des Public Keys ein Pre-Master-Secret. Für die Verschlüsselung wird überwiegend Diffie-Hellman- Kryptographieverfahren verwendet.
5. Der Client sendet "client key exchange" den generierten Schlüssel und die Ciphers an den Server.
6. Der Server enthält den Pre-Master-Secret und entschlüsselt dieser mit den Privat Key. Seit diesem Zeitpunkt haben beide das gleiche Pre-Master-Secret. Der Server genierirt einen Symmetrischen Schlüssel für die beidenseitigen Kommunikation.
7. Der Client sendet Client Finished
8. Der Server sendet Change Cipher Spec an den Client
9. Beide Seite verfügen über die gleichen symmetrischen Schlüssel
10. Der Server sendet Finished
Vertrauenskette (Chain of Trust)
Die bildliche Darstellung einer Vertrauenskette auf einem NetScaler:
Eine Zertifikatskette ist eine hierarchische Liste von Zertifikaten, die es ermöglicht die Gültigkeit des untergeordneten Zertifikats durch das übergeordnete Zertifikat zu validieren. Ober in der Hierarchie befindet sich ein Zertifikat der Stammzertifizierungsstelle (Root CA). Die Anzahl der Zertifikate in einer Kette kann unterschiedlich sein. Nach einer Root CA folgt immer eine intermediate CA, die ein untergeordnetes Zertifikat erstellt. Je nach Anbietet können mehrere Zertifikate in einer Vertrauenskette existieren. Dadurch wird eine zusätzliche Sicherheitsstufe geschaffen, damit keine Zertifikate direkt vom CA-Stammzertifikat ausgestellt werden. Wenn die Root CA und eine untergeordnete CA kompromittiert wird, werden alle ausgestellte Zertifikate nicht mehr gültig.
Hier können Sie Ihr installiertes Zertifikat analysieren lassen: SSL-trust.com
Es existieren drei Zertifikatstypen:
- Root CA
- Intermediate
- Server (Client) Certificate
Zertifikate auf einem Endgerät (Client)
Damit ein Client (Web Client) eine sichere Verbindung zwischen einem Webbrowser und einem Server herstellen kann, muss in den meisten Fällen ein Stammzertifikat einer Root CA im Browser-Zertifikatspeicher und auf dem Client installiert sein. Die Stammzertifikate einer öffentlichen Zertifizierungsstelle werden automatisch installiert und bei einem Update aktualisiert. Das Stammzertifikat einer privaten CA wird bei dem Domain Join an der richtigen Stelle gespeichert.
Allgemeine Informationen
- Wenn die HA konfigurieren wollen, müssen Sie das Serverzertifikat und die Schlüsseldateien sowohl auf der primären als auch auf der sekundären Citrix ADC-Appliance abspeichern.
- Auf einer ADC Appliance können maximal zwei Zertifikate für SSL VIP oder SSL Server angebunden werden, jeweils vom Typ RSA und vom Typ DAS. Mehr zum Thema RSA/DAS hier.
- Binden die Serverzertifikat nie im laufenden Betrieb an. Dies führt zur Unterbrechung der bestehenden Session.
Zertifikate erstellen / beantragen / installieren
Bevor Sie ein SSL-Zertifikat mit einem vServer verknüpft wird, sind unter aufgelisteten Schritte notwendig:
- Generieren Sie ein Privat Key auf dem NetScaler. (aktuell wird die Schlüsselgröße bis zu 4096Bit unterstützt) Ein Privat Key ist eine wichtige Bestandskomponenten eines Zertifikates. Dieser soll sicher aufgewartet werden.
- Erstellen Sie ein Certificate Signing Request (CSR) auf Basis des Privat Keys ebenso auf dem NetScaler.
- Leiten Sie den Request (CSR) an eine Zertifizierungsstelle (Certificate Authority / CA) Ihrer Wahl weiter.
- Laden Sie das Zertifikat auf den NetScaler (/nsconfig/ssl) hoch.
- Wenn Sie die HA konfigurieren wollen, müssen Sie das Serverzertifikat und die Schlüsseldateien sowohl auf der primären als auch auf der sekundären Citrix ADC-Appliance speichern.
- Erstellen Sie ein Zertifikat-Schlüssel-Paar auf der Citrix ADC-Appliance
- Verlinken Sie das Server Zertifikat mit dem Intermediate und/oder Root Zertifikat (Maximal können Sie bis zu 9 Intermediate CA in der Kette haben.
- Binden Sie das Zertifikat an den virtuellen Server
Alle darauffolgenden Schritte beschreiben eine manuelle Installation und Konfiguration der Zertifikate. Der NetScaler bietet auch eine alternative Wizard-gesteuerte Konfiguration an.
1. RSA Schlüssel erstellen:
1.1. Navigieren zum Traffic Management > SSL > SSL Files > Keys
1.2 Klicken Sie auf die Schaltfläche Create RSA Key
1.3. Füllen Sie alle Felder aus und klicken Sie auf Create
- Key Filename: Name des Files eingeben
- Key Size (bist): 2048
- Public Exponent Value: P4
- Key Format: wählen Sie PEM aus
- PEM Encording Algorithm: wählen Sie AES256 aus
- PEM Passphrase / Confirm PEM Passphrase: geben Sie das Passwort ein
Der RSA-Key wird in dem Ordner /nsconfig/ssl abgespeichert
2.1. Weiterhin erstellen wir einen CSR Request.
2.2. Navigieren zum Traffic Management > SSL > SSL Files > CSRs > Create Certificate Signing Request (CSR)
2.3. In dem Feld Request File Name geben Sie den gewünschten Name ein und wählen die eine vorher erstelle Key-Datei. Anschließend füllen Sie alle erforderlichen Felder aus.
Key Format: | PEM |
PEM Passphrase: | Ihr Passwort aus dem Punkt 1.3 |
Digest Method: | SHA256 |
Subject Alternative Name: | *optional |
* Wenn Sie kein Subject Alternative Name eingeben, werden Sie in allen Web-Browser außer Microsofts Internet Explorer und Edge mit der Meldung Non secure (Your connection is not privat) konfrontiert.
Common Name: | name.domainname.com |
Organization Name: | optional |
Organization Unit: | optional |
Email Address: | optional |
City: | optional |
Country: | optional |
Challange Password: | Passwort festlegen |
Company Name: | optional |
2.4. In diesem Schritt werden die Inhalte der erstellten Datei kopiert und für die weitere Verarbeitung bzw. Zertifikat-Erstellung der CA Ihrer Wahl übergeben.
Wählen Sie die CSR-Datei aus und klicken Sie auf View-Button.
2.5. Geben Sie die Inhalte an die CA weiter, ohne die Inhaltsstruktur zu ändern.
Offizielle Dokumentation: Create and Use SSL Certificates on a Citrix ADC Appliance
Server Zertifikat aus einem Certificate Signing Request Request erstellen
In meinem Beispiel verwende ich eine interne Windowsbasierte Zertifizierungsstelle
3.1. Öffnen Sie die Microsoft Active Directory Certificate Services Seite (http://CAServerName/CertSrv/) und klicken Sie auf Schaltfläche Request a certificate
3.2. Klicken Sie weiter auf die markierte Fläche Or, submit an advanced certicate request
3.3. Weiter auf Submit a certificate request by using a base-64-encoded...
3.4. Kopieren Sie die Inhalte der CSR-Datei in das Feld Saved Request. Wählen Sie Web Server aus dem Dropdown-Menü Certificate Template
3.5. Wählen Sie die Option Base 64 encoded und klicken Sie auf Download Certificate
3.6. Die in dem vorherigen Schritt erstellte Zertifikatsdatei soll auf dem NetScaler in den Ordner /nsconfig/ssl hochgeladen werden.
Zertifikat Installation / Certificate-Key Pair erstellen
4.1. Navigieren zum Traffic Management > SSL > SSL Certificate > Server Certificate
4.2. Klicken Sie auf Install-Button
4.3. Geben im dem Feld Certificate-Key Pair Name den Name des Zertifikats ein.
Certificate File Name: wählen Sie die bereits geladene Zertifikat-Datei. Wenn die Zertifikat-Datei noch nicht hochgeladen, können Sie diese jetzt hochladen.
Key File Name: wählen Sie den Key-File
Geben Sie das Passwort ein. Lassen weitere Einstellung (Notify When Expiere und Notification Perion) defaultmäßig aktiviert.
Anschließen klicken Sie auf Install
Zertifikate verlinken
5. In diesen, letzten Schritten sollen wir unser installieres Zertifikat mit den dazugehörigen Root- und/oder Intermidiate-Zertifikat verlinken, um die Vertrauenskette zu bilden. Weiter in diesem Artikel finden Sie eine Anleitung, wie Sie aus einem Server-Zertifikat ein Root-Zertifikat extrahieren können.
5.1. Zuerst installieren wir das Root- Zertifikat unserer internen Zertifizierungsstelle. Bei Bedarf werden auf den gleichen Art und Weise auch die Intermidiate-Zertifikate installiert.
Navigieren zum Traffic Management > SSL > SSL Certificate > CA Certificate und klicken Sie auf Install
5.2. Geben im dem Feld Certificate-Key Pair Name den Name für das Root-Zertifikat ein.
Certificate File Name: wählen Sie die Zertifikat-Datei.
Schließen Sie die Installation durch das Klicken auf die Install-Taste ab.
Das installierte Zertifikat erscheint auf der Konsole.
5.3. Navigieren zum Traffic Management > SSL > SSL Certificate > Server Certificates
Wählen Sie das Server-Zertifikat und klicken Sie auf Schaltfläche Select Action
Wählen Sie die Option Link
In dem Punkt 5.2 installiertes Zertifikat wird automatisch erkannt. Bestätigen Sie die Auswahl mit OK
Hiermit ist die Installation eines Zertifikats abgeschlossen. Sie können dieses für die NetScaler-Services Ihrer Wahl verwenden.
Root Zertifikat aus einem Server Zertifikat exportieren
1. Doppelklick auf dem Zertifikat > Registerkarte Certification Path > View Certificate
2. Registerkarte Details > Copy to File anklicken
3. Den Certificate Export Wizard folgen… Weiter
4. Base-64 encoded X.509 (.CER) auswählen
5. Speicherplatz und der Dateiname festlegen.
Wizard schließen
Nützliche Links:
- Citrix Doku: Install, link, and update certificates