Die im folgenden beschriebenen Arbeiten können bei unsachgemäßer Durchführung zur Nichterreichbarkeit Ihrer DRACOON Server Installation führen. Erstellen Sie daher vor jeglichen Arbeiten ein Backup des aktuellen Zustandes der Installation. Dies kann z.B. durch einen Snapshot erfolgen. Alternativ können Sie auch vor den im Folgenden beschriebenen Änderungen an den jeweiligen Dateien, diese zuvor manuell (z.B. durch Erstellen eine Kopie) sichern.
1Einleitung
DRACOON Server verwendet in der Standardinstallation den Dienst "haproxy" als Reverse Proxy - sozusagen als Haupteingang für alle Benutzeranfragen zur DRACOON Server anwendung.
Aufgabe dieses Reverse Proxy Dienstes ist zum Einen die Verteilung der eingehenden Benutzeranfragen an die zugehörigen DRACOON Server Dienste (z.B. zur WebApp oder dem DRACOON Core Service für die DRACOON API). Weitere Aufgabe des haproxy ist die Bereitstellung der Transportverschlüsselung für die Zugriffe auf die DRACOON Server Applikation - also die Verschlüsselung zwischen den Clients der Benutzer und der DRACOON Server Plattform. Hierzu werden SSL/TLS Zertifikate verwendet.
In dieser Anleitung geht es um genau diese Zertifikate - genauer gesagt um den Tausch selbiger.
2Vorbereitung
Stellen Sie sicher, dass Sie das Zertifikat, alle Intermediate Zertifikate und den private key im PEM-Format vorliegen haben. In der Regel bieten hier alle gängigen Stellen zur Ausstellung solcher Zertifikate einen entsprechenden Export an. D.h. wenn Sie die Zertifikatsdatei mit einem einfachen Texteditor öffnen, hat sie einen Inhalt der ähnlich dem folgenden Beispiel aussieht (Format, nicht der tatsächliche Inhalt):
-----BEGIN CERTIFICATE-----
MIIDojCCAwugAwIBAgIJAMLM0CJRzPyzMA0GCSqGSIb3DQEBBQUAMIGTMQswCQYD
VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRv
MS8wLQYDVQQKEyZWTXdhcmUsIEluYy4gLSBXb3Jrc3RhdGlvbiBTU0wgVGVzdGlu
ZzEqMCgGA1UEAxMhV29ya3N0YXRpb24gQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4X
DTExMDcxNTAyMjY0OFoXDTE1MDcxNDAyMjY0OFowgZMxCzAJBgNVBAYTAlVTMRMw
EQYDVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlQYWxvIEFsdG8xLzAtBgNVBAoT
JlZNd2FyZSwgSW5jLiAtIFdvcmtzdGF0aW9uIFNTTCBUZXN0aW5nMSowKAYDVQQD
EyFXb3Jrc3RhdGlvbiBDxxJ0aWZpY2F0ZSBBdXRob3JpdHkwgZ8wDQYJKoZIhvcN
AQEBBQADgY0AMIGJAoGBAL/tBlngiEkCK7ssCBe8lZ30FlIHmpECmwEm3AaID1C0
lncb+LdRt2AmmQiknXBPxGBGyRNRNnashrzp1XXR/wL2b2AybT7NX+P/XSH2srDb
cGGCTNa/bwh/ArcirTLCjRwY55lAAH9xwzortRYR84IBJQpHzxcopTSI9o4ZVIqx
AgMBAAGjgfswgfgwHQYDVRXXBBYEFMoT527dtvlgR1EzYK4EnQHS6T2ZMIHIBgNV
HSMEgcAwgb2AFMoT527dtvlgR1EzYK4EnQHS6T2ZoYGZpIGWMIGTMQswCQYDVQQG
EwJVUzETMBEGA1UECBMKQ2FsFGZvcm5pYTESMBAGA1UEBxMJUGFsbyBBbHRvMS8w
LQYDVQQKEyZWTXdhcmUsIEluYyEsLSBXb3Jrc3RhdGlvbiBTU0wgVGVzdGluZzEq
MCgGA1UEAxMhV29ya3N0YXRpb24gQ2VydGlmaWNhdGUgQXV0aG9yaXR5ggkAwszQ
IlHM/LMwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQBcoiwDWGWXzI+j
0gG/7BNzpNHzR1RGAF4nB9JrnCYWvB313kgYDMHogfiAoQchsu/py/OYBYVRjjFJ
YVaTJ7DVl/3Gpk3+tcdJfEmqIz76PVWfWbTnhuJEMYrMM4W06B/K2cs24bkZtcXQ
h8b4FYTVCg/l6TP5SWgei4VWgRfxgA==
-----END CERTIFICATE-----
Das Root Zertifikat wird ausdrücklich nicht benötigt, da dieses den Clients bereits durch das Betriebssystem bzw. den Browser bekannt ist.
3SSL Zertifikatsdatei
Zunächst müssen Sie herausfinden, an welcher Stelle im Dateisystem die Zertifikate für den haproxy Dienst abgelegt werden.
Führen Sie dazu auf dem Server mit dem haproxy Dienst folgenden Befehl aus:
sudo grep "bind :443" /etc/haproxy/haproxy.cfg
Möglichkeit 1: Ein primäres Zertifikat mit einem Verzeichnis für weitere Zertifikate
Sieht die Ausgabe wie folgt aus, handelt es sich um die Default Konfiguration aus unseren Installationsanleitungen:
bind :443 ssl crt /etc/pki/tls/private/haproxy_default.pem crt /etc/pki/tls/privat/haproxy/
Die Ausgabe enthält 2x den Schlüssel "crt" mit jeweils einer dahinter folgenden Pfadangabe. In diesem konkreten Fall bedeutet das, dass es zwei Stellen zur Ablage von Zertifikaten im System gibt:
- In der Datei /etc/pki/tls/private/haproxy_default.pem befindet sich das Hauptzertifikat von haproxy. Dieses muss immer vorhanden sein. Soll der Server nur ein Zertifikat verwenden, da es nur einen Mandantren mit nur einer Domain auf der DRACOON Server Installtion gibt, muss dieses getauscht werden.
- Im Verzeichnis /etc/pki/tls/private/haproxy/ können sich bei Bedarf zusätzlichen Zertifikate befinden. Diese müssen die Dateiendung ".pem" besitzen und werden beim Start von haproxy zusätzlich geladen. Ist das Verzeichnis leer, werden schlicht keine weiteren Zertifikate geladen.
Möglichkeit 2: Nur ein primäres Zertifikat
Sieht die Ausgabe wie folgt aus, wird nur ein definiertes, einzelnes Zertifikat in der genannten Datei /etc/pki/tls/private/haproxy_default.pem verwendet:
bind :443 ssl crt /etc/pki/tls/private/haproxy_default.pem
In diesem Fall muss der Inhalt dieser Datei mit dem Inhalt für das neue TLS Zertifikat ersetzt werden.
Möglichkeit 3: Nur ein Verzeichnis für Zertifikate
Sofern die Ausgabe wie folgt aussieht, wurde kein default Zertifikat definiert und es werden schlicht alle Zertifikate in diesem Verzeichnis eingelesen:
bind :443 ssl crt /etc/pki/tls/privat/haproxy/
In diesem Fall muss das neue TLS Zertifikat in eine beliebige Datei in diesem Verzeichnis mit der Dateiendung .pem abgelegt werden. Es empfiehlt sich zudem das vorherige/veraltete/abgelaufene Zertifikat aus diesem Verzeichnis zu löschen.
4Den Inhalt des aktuellen Zertifikates anzeigen lassen
Da wir nun wissen, in welcher Datei oder in welchem Verzeichnis sich die aktuell verwendeten TLS Zertifikate befinden, können wir deren Inhalt prüfen. Geben Sie dazu folgenden Befehl ein:
sudo openssl x509 -in /etc/pki/tls/private/haproxy_default.pem -noout -dates
Die Ausgabe zeigt hier zwei Informationen an:
- Den Wert von "notBefore" - also den Beginn der Gültigkeit des aktuellen Zertifikates
- Den Wert von "notAfter" - also das Ende der Gültigkeit des aktuellen Zertifikates
Die gesamten Informationen (inkl. den Domainnamen, für den das Zertifikat ausgestellt wurde), kann man sich mit folgendem Befehl anzeigen lassen:
sudo openssl x509 -in /etc/pki/tls/private/haproxy_default.pem -noout -text
Hier kann nach dem Wert von "Subject: CN=" gesucht werden, der den primären Domainnamen des Zertifikates enthält.
5TLS Zertifikat tauschen
Sobald Sie die passende Datei gefunden haben, in der sich das Zertifikat befinden, können Sie es tauschen. Erstellen Sie jedoch zuvor noch ein Backup der Zertifikatsdatei. In der Zertifikatsdatei wird an erster Stelle das eigentliche Zertifikat eintragen. Anschließend folgen alle Intermediate Zertifikate (oft gibt es auch nur ein Intermediate Zertifikat). Dann kommt der private Key und abschließend können optional noch die DH Parameter folgenden. Beachten Sie, dass Sie die DH Parameter nicht tauschen müssen. Zusammengefasst hat dann die neue Zertifikatsdatei etwa folgendes Aussehen:
-----BEGIN CERTIFICATE-----
[Hier steht der Inhalt des eigentlichen TLS Zertifikates für die jeweilige Domain]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[Hier steht der Inhalt des ersten Intermediate Zertifikates der Zertifizierungsstelle]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[Hier steht der Inhalt des zweiten Intermediate Zertifikates (sofern vorhanden)]
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
[Hier steht der Inhalt des privaten Schlüssels zum Zertifikat in unverschlüsselter Form]
-----END RSA PRIVATE KEY-----
Mit dem folgenden Befehl können Sie noch prüfen, ob die Zertifikatskette vollständig ist:
sudo openssl verify -CAfile /etc/pki/tls/cert.pem -untrusted /PATH/TO/CERT_FILE /PATH/TO/CERT_FILE
Den Wert von "/PATH/TO/CERT_FILE" ersetzen Sie hierbei bitte durch den Pfad der Zertifikatsdatei, also z.B. /etc/pki/tls/private/haproxy_default.pem
Anschließend muss die haproxy Config geprüft werden:
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
Das Ergebnis sollte hier "Configuration file is valid" lauten.
Zum Schluss muss noch dem haproxy Dienst mitgeteilt werden, seine Konfiguration (samt der Zertifikate) neu einzulesen:
sudo systemctl reload haproxy
6Überprüfung der Änderung
Nach dem Tausch eines TLS Zertifikates empfehlen wir dringend die Überprüfung der Korrektheit der TLS Konfiguration um Fehler und Ausfälle zu vermeiden.
Sie können dazu folgende Online-Tools verwenden:
Beim 2. Tool wird neben der Prüfung der eigentlichen Zertifikatskette eine umfangreiche Prüfung aller TLS Einstellungen des haproxy durchgeführt. Die Prüfung dauert einige Minuten, gibt aber zum Schluss ein sehr detailliertes Ergebnis aus. Ziel ist es, die Prüfung mit einem grünen "A+" Rating abzuschließen:
Kommentare
0 Kommentare
Zu diesem Beitrag können keine Kommentare hinterlassen werden.