Eigene X.509 Root-CA erstellen (selbstsigniert)
Einleitung
TLS-Zertifikate sorgen dafür, dass Verbindungen im Internet oder im Intranet verschlüsselt und vertrauenswürdig sind. Normalerweise bezieht man Zertifikate von öffentlichen Zertifizierungsstellen (z. B. Let's Encrypt). Für interne Dienste (z. B. Test-Webserver, MQTT-Broker) kann man jedoch selbst eine Certificate Authority (CA) betreiben.
In diesem Tutorial lernst du:
-
eine eigene selbstsignierte Root-CA zu erstellen
-
damit Server-Zertifikate zu signieren
-
Zertifikate zu prüfen und einzusetzen
Vorbereitung
Wir brauchen eine Linux Umgebung, ich nutze hierfür eine virtuelle Debian Maschine.
Zuerst überprüfen wir, ob OpenSSL installiert ist:
openssl version
Wenn die Ausgabe so ähnlich aussieht wie hier, dann passt alles:
OpenSSL 3.0.17 1 Jul 2025 (Library: OpenSSL 3.0.17 1 Jul 2025)
ansonsten muss OpenSSL erst installiert werden:
apt update && apt install openssl -y
Danach erstellen wir einen neuen Ordner (im Home-Verzeichnis), in dem alle Dateien abgelegt werden:
mkdir -p ~/certs
cd ~/certs
Root-CA Schlüssel & Zertifikat erstellen
Im nächsten Schritt erstellen wir den privaten Schlüssel für unsere Root-CA:
openssl genrsa -out myCA.key 2048
Anschließend erstellen wir ein selbst signiertes Root-CA Zertifikat:
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.crt
OpenSSL fragt uns jetzt nach den sogenannten Distinguished Name (DN)-Feldern. Das sind Angaben, die später ins Zertifikat geschrieben werden. Die meisten Felder kann man leer lassen, aber Common Name (CN) sollte ausgefüllt werden.
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DarkMatterBytes
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:DarkMatterBytes Root CA
Email Address []:.
Es reicht, hier lediglich Country Name (DE), Organization Name (DarkmatterBytes) und den Common Name (DarkMatterBytes Root CA) auszufüllen. Alles andere können wir mit einem Punkt beantworten, dadurch bleibt das entsprechende Feld leer.
Jetzt haben wir zwei Dateien:
root@debian-vm:~/certs# ls -l
insgesamt 8
-rw-r--r-- 1 root root 1257 12. Aug 14:57 myCA.crt
-rw------- 1 root root 1704 12. Aug 14:56 myCA.key
Wir können jetzt das Root-CA Zertifikat überprüfen:
openssl x509 -in myCA.crt -noout -text
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
29:25:51:47:39:bd:07:db:fb:17:5c:7b:8e:00:3f:19:31:38:0a:a3
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = DE, O = DarkMatterBytes, CN = DarkMatterBytes Root CA
Validity
Not Before: Aug 12 12:57:25 2025 GMT
Not After : Aug 11 12:57:25 2030 GMT
Subject: C = DE, O = DarkMatterBytes, CN = DarkMatterBytes Root CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:ec:64:16:3d:b7:97:1a:10:2f:25:d9:d1:4b:e4:
74:34:23:43:3d:51:d1:5f:80:de:08:77:89:55:64:
fd:1d:74:0e:58:98:ab:81:f1:22:44:da:bb:fe:c7:
1e:e8:21:f4:6a:8e:dd:43:c2:71:47:9d:e7:0d:73:
16:7e:42:cf:ae:d2:ec:2e:57:60:55:c3:7c:2c:ad:
e2:1a:78:e5:2c:03:69:7c:37:3e:ec:40:59:46:0f:
b9:35:75:19:a3:e7:f0:ca:1b:e3:77:1b:37:a4:2e:
2c:85:9e:df:01:d9:14:d1:c3:44:a7:40:31:d6:3d:
df:1d:97:8d:3d:23:27:9f:d3:09:96:f8:09:cf:78:
60:df:cc:9f:cc:cd:40:0c:b1:bf:cc:fc:7d:bc:af:
26:46:55:91:1b:27:71:41:5c:33:73:56:f8:a4:f1:
57:32:cf:18:93:44:c1:51:0c:19:b7:d0:be:89:e6:
9b:22:7c:b6:14:77:8a:98:5c:01:0f:4a:8b:43:19:
f2:32:35:07:91:75:dd:ff:c3:a5:49:3e:a0:00:36:
d2:5f:83:87:85:45:55:ad:bb:13:91:70:b4:b6:5e:
cd:0d:d5:36:59:b5:a2:71:d1:2e:11:8d:7f:e4:ca:
55:48:11:a3:2b:99:81:ec:4f:16:ea:6e:60:6d:2d:
22:fb
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
44:F5:4B:2D:53:61:84:6F:67:63:1F:FE:7D:BC:4F:1C:31:82:B7:C5
X509v3 Authority Key Identifier:
44:F5:4B:2D:53:61:84:6F:67:63:1F:FE:7D:BC:4F:1C:31:82:B7:C5
X509v3 Basic Constraints: critical
CA:TRUE
Signature Algorithm: sha256WithRSAEncryption
Signature Value:
49:65:74:27:90:df:85:25:a3:f2:d6:ab:7c:86:65:a4:cf:4c:
25:72:56:18:28:44:fe:1c:f8:7d:80:7d:68:b5:21:c7:56:83:
fe:70:78:b3:c1:3c:32:a3:ee:95:01:a4:7e:be:ff:0a:34:e9:
5a:ef:c1:ed:ed:dc:7d:69:46:3b:2a:b5:8f:8a:e2:2f:42:c8:
24:92:d3:69:5f:80:74:94:67:5b:96:60:77:79:2b:07:8c:84:
55:2d:6a:fe:ab:2d:e4:0c:48:b8:09:eb:c5:6e:34:69:6f:b8:
57:dc:b3:05:fd:0d:ae:49:12:d6:42:17:ef:fd:a5:f2:6a:b0:
a1:b8:c3:3c:34:a9:40:34:6d:98:2f:a8:81:9a:ab:17:b1:28:
e9:e1:b2:8a:54:f5:6c:fe:59:cc:6c:21:9c:7d:3b:3e:23:69:
79:5a:13:d5:0d:fb:9a:53:41:d7:c9:d2:ff:f6:53:51:44:e6:
f4:19:4b:84:d7:1e:fc:e3:3c:70:0d:bd:bb:80:9b:ad:f1:5e:
01:a8:8b:a7:ba:84:99:83:0b:4a:e2:b2:94:d0:8d:e7:b5:a2:
f6:57:5c:a4:4c:ae:ee:d8:de:5d:7d:4b:ac:da:85:ce:3e:6e:
1e:40:c8:d7:45:68:80:30:f6:6c:53:85:99:d8:e2:e9:28:17:
69:38:8b:b1
Wie wir sehen, sind Issuer und Subjekt die gleiche Entität, es ist ja auch ein selbst signiertes Zertifikat. Das bedeutet, dass die CA sich selbst bestätigt und keinen externen Aussteller hat.
Root-CA Zertifikat installieren
Um eine echte CA zu werden, müssten wir das Root-CA Zertifikat nun auf allen Geräten weltweit installieren. Da wir aber nur unsere eigene CA werden wollen, reicht es, das Zertifikat auf unseren eigenen Geräten zu installieren.
Wir werden das Zertifikat nun auf einer Windows Maschine installieren. Dazu muss das Zertifikat auf die entsprechende Maschine übertragen werden.
Wenn das Zertifikat auf der Windows Maschine gelandet ist, können wir loslegen:
-
WIN + R --> mmc eingeben --> Ok
-
Datei --> Snap-In hinzufügen/entfernen
-
Nach unten scrollen --> Zertifikate auswählen --> Hinzufügen
-
Computerkonto auswählen
-
Lokalen Computer auswählen
-
Vertrauenswürdige Stammzertifizierungsstellen --> Zertifikate --> Rechtsklick --> Alle Aufgaben --> Importieren
-
Die Zertifikatsdatei auswählen
-
Zertifikatspeicher auswählen
Wenn alles geklappt hat, ist unser Root-CA Zertifikat in der Liste zu sehen

Nun ist das Zertifikat im System installiert und wird z.B. vom Browser als gültiges Root-CA Zertifikat akzeptiert. Über das gleiche Menü lässt sich das Zertifikat auch wieder deinstallieren.
Root-CA Zertifikat verwenden
Im nächsten Post zeige ich, wie man mit dem eigenen Root-CA Zertifikat weitere Zertifikate signieren kann.