====== Erstellen von SSL-Zertifikaten für EDPweb & EDPsync ====== EDPweb bietet die Möglichkeit die Datenverbindungen mittels https über TLS zu verschlüsseln, um den unbefugten Zugriff auf Daten durch Dritte zu verhindern. Diese Verschlüsselungsverfahren benötigen Zertifikate und Schlüssel zur Berechnung der kryptografischen Prozesse. In diesem Artikel wird die Erstellung dieser Zertifikate und Schlüssel mittels dem kostenlosen Programm [[https://hohnstaedt.de/xca/|xca]] gezeigt. Anschließend wird noch die Möglichkeit der Authentifizierung mittels Clientzertifikaten demonstriert, die eine weitere starke Absicherung gegenüber unbefugtem Zugriff auf die Systeme bietet. ===== Download & Installation ===== **In der xca-Version 2.5 ist ein Bug enthalten, der die Ausführung mittels dieser Anleitung verhindert, bitte andere Versionen nutzen** xca bietet die Möglichkeit Zertifikate und die dazugehörigen Schlüssel einfach verwalten und erzeugen zu können. Herunterladbar ist xca über die Website des Entwicklers: [[https://hohnstaedt.de/xca/index.php/download|Download]] Dort einfach die passende Version für das eigene Betriebssystem herunterladen und über die bekannten Wege installieren. Im Installationsprozess die Option "typical" wählen. {{:edpweb:screenshot_2023-06-28_164950.png?400|}} Nach erstmaligem Start der Software muss zunächst eine Datenbank angelegt werden, dafür auf "Datei" und dann "Neue Datenbank" auswählen. {{:edpweb:screenshot_2023-06-28_165115.png?400|}} Im sich öffnenden Dialog einen beliebigen Ordner auswählen und der Datenbank einen passenden Namen geben. {{:edpweb:screenshot_2023-06-28_165159.png?400|}} Das Passwortfeld kann auch leer gelassen werden, da die Datenbank nur lokal genutzt wird. {{:edpweb:screenshot_2023-06-28_165211.png?400|}} Nun kann mit dem Erstellen der Zertifikate begonnen werden. ===== Zertifikatsvorlagen ===== Um das Erstellen der Zertifikate möglichst einfach zu gestalten, wurden einige Vorlagen erstellt, die unter folgendem Link heruntergeladen werden können: {{ :edpweb:vorlagen.zip |Vorlagen}} Der Ordner muss dann nur entpackt und importiert werden. Das Importieren geht in xca über "Import" -> "Vorlagen". {{:edpweb:screenshot_2023-06-29_115948.png?400|}} Dort alle drei Vorlagen auswählen und im nächsten Schritt "Alle importieren" wählen. {{:edpweb:screenshot_2023-06-28_165336.png?400|}} ===== Erstellen einer CA ===== Um die später erstellten Zertifikate auch signieren zu können, muss zuerst eine Certificate Authority (CA) erzeugt werden. Dazu in den Reiter "Zertifikate" wechseln und im rechten Menü "Neues Zertifikat" auswählen. {{:edpweb:screenshot_2023-06-28_165359.png?400|}} Im Dialog kann nun unten eine Vorlage gewählt werden, dort die Vorlage "EDPwebCA" auswählen und schließlich "Alles übernehmen" klicken. {{:edpweb:screenshot_2023-06-28_165438.png?400|}} In den Reiter "Inhaber" wechseln und dort die eigenen Daten eintragen. So sieht beispielhaft eine vollständige Konfiguration aus, das Feld "commonName" kann dabei einfach von der Vorlage übernommen werden und der interne Name ist am einfachsten der commonName: {{:edpweb:screenshot_2023-06-28_165622.png?400|}} Unten nun einen neuen Schlüssel erstellen. Im folgenden Dialog die Schlüssellänge auf "4096 Bit" setzen und bestätigen. {{:edpweb:screenshot_2023-06-29_141538.png?400|}} Jetzt noch den Dialog zum Erstellen des Zertifikats mit "Ok" bestätigen und die CA ist generiert. ===== Erstellen eines Server-Zertifikats ===== Dieser Abschnitt enthält eine Anleitung zum Erstellen eines signierten Server-Zertifikats, falls Sie bereits ein solches Zertifikat besitzen und basierend darauf Client-Zertifikate erzeugen wollen, können Sie zum Abschnitt "Importieren eines Server-Zertifikats" wechseln. Zum Erstellen eines signierten Zertifikats muss per Rechtsklick auf die erstellte CA geklickt und dann "Neu" ausgewählt werden. {{:edpweb:screenshot_2023-06-28_165722.png?400|}} Dort öffnet sich dann wieder ein Dialog ähnlich zum Dialog zur Erstellung der CA. Da die Schritte nun fast identisch sind zum vorherigen Abschnitt, folgt nun nur eine kurze Anleitung in Stichpunkten: - Vorlage "EDPwebServer" auswählen - "Alles übernehmen" - Reiter "Inhaber" vollständig ausfüllen - Unten im Reiter wieder einen neuen Schlüssel mit einer Schlüssellänge von 4096 Bit generieren - im Reiter "Erweiterungen" kann unter "Zeitspanne" noch die Gültigkeitsdauer des Zertifikats eingestellt werden (Standardmäßig 1 Jahr) ===== Importieren eines Server-Zertifikats ===== Dieser Schritt ist notwendig, wenn bereits ein Server-Zertifikat vorhanden ist und für den Zugang auf EDPweb eine Authentifizierung mittels Client-Zertifikaten ergänzt werden soll. Dafür muss das vorhandene Zertifikat inklusive des Schlüssels in xca importiert werden. Dies geschieht, wie beim Import der Vorlagen, über die Import Funktion. Dort also erst das Zertifikat "ssl.cer" aus dem EDPweb-Ordner und dann den zugehörigen Schlüssel "ssl.key" importieren. {{:edpweb:screenshot_2023-06-29_125810.png?400|}} Im Reiter Zertifikate ist nun auch das importierte Zertifikat vorhanden. Durch Rechtsklick auf das importierte Zertifikat und dann "Umwandeln" -> "Zertifikatsantrag" wird ein Antrag auf Signierung gestellt. {{:edpweb:screenshot_2023-06-29_130119.png?400|}} Im Reiter Zertifikatsanträge liegt nun der erstellte Antrag. Dort Rechtsklick und "Unterschreiben" klicken. {{:edpweb:screenshot_2023-06-29_130516.png?400|}} Im Dialog nun unter "Unterschreiben" auf "Verwende dieses Zertifikat zum Unterschreiben" wechseln und die vorher erstellte CA auswählen. Weiterhin als Vorlage "EDPwebServer" auswählen und "Alles übernehmen" klicken. {{:edpweb:screenshot_2023-06-29_130854.png?400|}} Im Reiter "Erweiterungen" kann unter Zeitspanne die Gültigkeit eingestellt werden (Standardmäßig 1 Jahr). Dann kann der Dialog mit "Ok" bestätigt werden, um das Zertifikat zu signieren. ===== Erstellen von Client-Zertifikaten ===== Um den Zugang zu Webdiensten, wie EDPweb oder EDPsync, weiter abzusichern, gibt es die Möglichkeit die Vorlage eines Client-Zertifikats zu fordern, ohne das keine Verbindung mit dem Server hergestellt werden kann. Um die Erstellung dieser Client-Zertifikate geht es in diesem Abschnitt. Zur sinnvollen Nutzung der Client-Zertifikate müssen die vorherigen Abschnitte durchgeführt worden sein und eine CA und ein signiertes Server-Zertifikat vorliegen. Zum Erstellen eines Client-Zertifikats muss im Reiter "Zertifikate" per Rechtsklick auf die CA und dann "Neu" geklickt werden. {{:edpweb:screenshot_2023-06-28_165722.png?400|}} Der folgende Dialog ist bekannt und wird deshalb wieder per Stichpunktliste erklärt: - Vorlage "EDPwebClient" auswählen - "Alles übernehmen" - Reiter "Inhaber" vollständig ausfüllen - Unten im Reiter wieder einen neuen Schlüssel mit einer Schlüssellänge von 4096 Bit generieren - Im Reiter "Erweiterungen" kann unter "Zeitspanne" noch die Gültigkeitsdauer des Zertifikats eingestellt werden (Standardmäßig 1 Jahr) Mit "Ok" bestätigen und schon ist ein Client-Zertifikat erstellt, was beliebig häufig von Clients genutzt werden kann, um sich beim Server zu authentifizieren. Die "Zertifikate"-Ansicht in xca sollte jetzt so aussehen (bei Import eines Server-Zertifikats ist natürlich der Name vom Zertifikat anders und auch das unsignierte Zertifikat ist aufgelistet): {{:edpweb:screenshot_2023-06-28_165904.png?400|}} Wichtig ist nur, dass die CA vorhanden ist und jeweils ein Server- und Client-Zertifikat, das von der CA signiert ist (sichtbar durch die Einrückung unter der CA oder durch Doppelklick auf das jeweilige Zertifikat). ===== Export der Zertifikate ===== Um die Zertifikate nun auch im EDPweb nutzen zu können, müssen alle Zertifikate und Schlüssel in einem geeigneten Zertifikat exportiert werden. ==== Server-Zertifikat & Schlüssel ==== Das Server-Zertifikat muss im PEM-Format als .crt exportiert werden, dafür muss in der Zertifikatsübersicht per Rechtsklick auf das EDPwebServer-Zertifikat und dann "Export" -> "Datei" geklickt werden. {{:edpweb:screenshot_2023-06-29_101242.png?400|}} Im folgenden Dialog dann einen Speicherort und als Exportformat "PEM (*.crt)" wählen. Und durch "Ok" bestätigen. {{:edpweb:screenshot_2023-06-29_140937.png?400|}} Für den Schlüsselexport muss in den Reiter "Schlüssel" gewechselt werden und dort per Rechtsklick auf den Schlüssel "EDPwebServer", dort "Export" -> "Datei" gewählt werden. Im folgenden Dialog dann einen Speicherort und als Exportformat "PEM privat (*.pem)" wählen. Und durch "Ok" bestätigen. {{:edpweb:screenshot_2023-06-29_101601.png?400|}} Falls keine Client-Zertifikate erstellt werden sollen, ist der eigentliche Export-Prozess beendet und es kann zum Abschnitt "Umbenennen der Dateien" gewechselt werden. ==== CA-Zertifikat ==== Damit der Webserver die Signatur des Client-Zertifikats überprüfen kann, muss das CA-Zertifikat auch hinterlegt werden. Dafür muss per Rechtsklick auf das CA-Zertifikat "EDPwebCA" geklickt und dann "Export" -> "Datei" gewählt werden. Der Export geschieht als "PEM (*.crt)". ==== Client-Zertifikat ==== Das Client-Zertifikat muss in einem anderen Format exportiert werden, da das Zertifikat und der private Schlüssel zusammen in einer Datei vorliegen müssen. Dafür geschieht der Export des Zertifikats "EDPwebClient" im "PKCS#12 (*.pfx)" Format. Das Passwort sollte dabei leer bleiben. Wenn die Client-Zertifikate auch dafür genutzt werden sollen, um eine Verbindung mit EDPsync aufzubauen, muss das Zertifikat "EDPwebClient" zusätzlich als "PEM + Schlüssel (*.pem)" exportiert werden. {{:edpweb:screenshot_2023-06-29_101352.png?400|}} ===== Umbennen der Dateien ===== Nun liegen alle Dateien als Export vor, damit EDPweb jetzt die Dateien richtig einlesen kann, müssen die Dateien inklusive Endungen noch umbenannt werden. Folgende Dateien sollten jetzt vorliegen (bei Client-Zertifikat-Export, ansonsten natürlich nur Server-Zertifikat und Server-Schlüssel): {{:edpweb:screenshot_2023-06-29_101651.png?400|}} Nach folgendem Schema wird jetzt umbenannt: * EDPwebCA.crt -> root.cer * EDPwebServer.crt -> ssl.cer * EDPwebServer.pem -> ssl.key * EDPwebClient.pem -> ClientZert.pem EDPwebClient.pfx muss nicht umbenannt werden. So sollte es dann aussehen: {{:edpweb:screenshot_2023-06-29_105019.png?400|}} ===== Hinterlegen der Zertifikate ===== Damit die Zertifikate nun richtig genutzt werden können, müssen die jeweiligen Dateien noch im richtigen Verzeichnis abgelegt, bzw. richtig importiert werden. ==== EDPweb ==== Zur Nutzung in EDPweb müssen nur folgende Dateien im "/EDP/EDPweb/"-Ordner abgelegt werden: * root.cer * ssl.cer * ssl.key Dadurch werden auch bei EDPsync automatisch die neuen Zertifikate verwendet (wenn das lokale System ein Mastersystem ist). ==== Client-Zertifikate ==== === Windows === Die Client-Zertifikate müssen bei jedem System hinterlegt werden, das Zugriff auf EDPweb oder EDPsync haben möchte. Folgend ist beispielhaft eine Anleitung zur Hinterlegung bei Windows für die Browser Edge und Google Chrome, für Firefox nach "firefox zertifikat importieren" googeln. Bei Windows nach "Benutzerzertifikate verwalten" suchen und den Eintrag öffnen. {{:edpweb:screenshot_2023-06-29_145325.png?400|}} Dort Rechtsklick auf "Eigene Zertifikate" -> "Alle Aufgabe" -> "Importieren..." {{:edpweb:screenshot_2023-06-29_145520.png?400|}} Im folgenden Dialog das Client-Zertifikat als .pfx-Datei auswählen, in den nächsten zwei Schritten einfach nur "Weiter" klicken und dann "Fertigstellen". Nach dem Import einmal den Browser neu starten, der zum Zugriff genutzt werden soll. Nun kann EDPweb wieder wie gewohnt genutzt werden. === iPad & iPhone === Damit auch von Apple-Geräten ein Zugriff auf das EDPweb besteht, müssen dort ebenfalls die Clientzertifikate hinterlegt werden. **Je nach iOS-Version kann es erforderlich sein, dass die Clientzertifikate mit einem Passwort gesichert sind.** Dafür muss das Clientzertifikat nochmals exportiert werden und dabei ein Passwort angegeben werden. Nach dem Herunterladen des Zertifikats wird angefragt, ob ein Profil mit dem Zertifikat angelegt werden soll. Diese Installation kann einfach durchgeführt werden. Danach muss das Profil selber noch installiert werden. Dafür muss in die Einstellungen gewechselt werden. Dort sollte ein Punkt "Profil geladen" auftauchen. {{:edpweb:img_0001.png?400|}} Über diesen Punkt wird nochmals ein Installationsprozess gestartet. Der einfach durch Authentifizierung auf dem Gerät und Eingabe des Zertifikatpasswortes durchgeführt werden kann. {{:edpweb:img_0002.png?400|}} Danach ist der Zugriff auf das EDPweb wieder möglich. ==== EDPsync ==== Um als Clientsystem das Client-Zertifikat für eine Verbindung im EDPsync zu verwenden, muss im Clientsystem nur die Datei "ClientZert.pem" im EDPserver-Ordner also "/EDP/server/" hinterlegt werden.