Eigene Zertifizierungsstelle und Zertifikate mit Hilfe von XCA
Mit Hilfe von XCA ist es recht einfach eine eigene Zertifizierungsstelle (CA - Certificate Authority) zum Ausstellen von Zertifikaten zu erstellen. Beachten sollte man das die mit XCA erstellten Zertifikate nicht standardmäßig vertraut werden, da es sich nicht um eine offizielle Zertifizierungsstelle handelt. Dazu muss das erstellte CA-Zertifikat im Browser bzw. Betriebssystem importiert werden.
XCA gibt es für macOS, Linux und Windows und ist damit universell einsetzbar. Benutzt werden können die damit erstellten Zertifikate z.B. für das Webinterface vom NAS oder Router. Auch wären damit EAP-TLS für WLAN, oder private S/MIME E-Mail Verschlüsselung möglich. In dieser Anleitung geht es aber um den Aufbau einer CA und das Erstellen von Server-Zertifikaten.
Nach Start des Programms muss als erstes eine verschlüsselte Datenbank erstellt werden, in der dann später die CA und Zertifikate sicher gespeichert werden. Unter Datei / Neue Datenbank eine Datenbank mit Passwort anlegen. Dazu unter Save As: die Bezeichnung der neuen Datenbank angeben und unter Where: den Speicherort.
Damit ist die Datenbank erstellt und es können Zertifikate angelegt werden.
Erstellung Zertifizierungsstelle (CA)
Bei dem ersten Zertifikat handelt es sich um das CA-Zertifikat und ist damit ein selbst signiertes Zertifikat, da es in der Hierarchie an erster Stelle steht. Als Vorlage wird [default] CA ausgewählt und alle Eigenschaften übernommen.
Unter Inhaber ist es nicht notwendig alle Felder auszufüllen, wichtig wäre nur der commonName (cn).
Im nächsten Schritt wird der private Schlüssel der CA erzeugt. Schlüsseltyp und Schlüssellänge können angepasst und als Standard gespeichert werden. Die später mit dieser CA erstellten Zertifikate sollten die gleichen Einstellungen verwenden.
Normalerweise wären keine weiteren Anpassungen notwendig, es empfiehlt sich aber die Gültigkeit und Zeitspanne der Zertifikate unter Erweiterungen anzupassen. Die Gültigkeit wurde auf den 01.01.2018 vorverlegt, da sonst neu ausgestellte Zertifikate häufig nicht mehr als vertrauenswürdig eingestuft werden, wenn die Laufzeit länger als zwei Jahre ist.
Seit März 2018 werden z.B. vom Apple-eigenen Browser Safari nur noch Zertifikate mit einer Laufzeit von maximal 2 Jahren unterstützt. Das wurde ab den 01. September 2020 noch weiter auf 1 Jahr verkürzt. Andere Anbieter von Internet-Browsern werden da nachziehen. Zertifikate die vor März 2018 ausgestellt wurden betrifft die Laufzeitverkürzung nicht und können unbegrenzt ausgestellt werden.
Damit ist das Erstellen der Root-CA abgeschlossen und das erste Server-Zertifikat kann erstellt werden.
Erstellung Server-Zertifikat
Dazu wählt man zum Signieren die zuvor erstellte CA aus und als Vorlage [default] TLS_server.
Auch hier ist für die Funktionsweise nicht notwendig alles auszufüllen, wichtig ist nur das Feld commonName (cn) für den DNS Namen. Möchte man mehrere DNS Namen, Such-Domains oder IP-Adressen anlegen, dann hat man später noch die Möglichkeit dazu.
Der private Schlüssel des Server-Zertifikates sollte den gleichen Schlüsseltyp und Schlüssellänge haben wie das zuvor erstellte CA-Zertifikat.
Wichtig wären auch hier die Gültigkeit und Zeitspanne des Zertifikates zu ändern. Möchte man zusätzlich den DNS Namen mit einer Suchdomain angeben, oder die IP-Adresse, dann wäre das unter dem Punkt Subject Alternative Name (SAN) möglich.
In der Zertifikatsübersicht ist die Hierarchie gut zu erkennen, alle Server bzw. Client-Zertifikate werden unter der CA aufgeführt. Abschließend kann das jeweilige Zertifikat über die Exportfunktion im jeweiligen Format exportiert werden.
Für die privaten Schlüssel gibt es einen eigenen Reiter. Bei diesen Schlüsseln ist aber Vorsicht geboten, denn die sollten nicht in fremde Hände gelangen. Der private Schlüssel von der CA sollte niemals exportiert werden! Wird eine Datenbank bzw. Zertifikat doch einmal kompromittiert, dann wäre eine neue CA schnell erstellt.
Erstellung SAN Server-Zertifikat
Es ist möglich mehrere DNS Name oder IP-Adressen im Server-Zertifikat zu hinterlegen.
Wichtig ist der Typ, dieser muss mit dem Inhalt übereinstimmen. Bei diesem Beispiel werden folgende Seiten als vertrauenswürdig eingestuft:
https://example.com
https://example.org
https://example.net
https://192.168.1.1
Der DNS Name example.com wird aus dem Feld commonName (DNS:copycn) kopiert, das sollte man auch grundsätzlich so beibehalten.