neues Zertifikat generieren für admin.ekey
# Client-Zertifikate mit eigener CA erstellen (OpenSSL)
## Ziel
Dieser Leitfaden beschreibt, wie man
1. eine eigene Certificate Authority (CA) erstellt (einmalig) und
2. für **jeden neuen Nutzer** ein Client-Zertifikat erzeugt, signiert und als `.pfx` bereitstellt,
um z. B. eine Website per Client-Zertifikat (mTLS) abzusichern.
---
## Voraussetzungen
- OpenSSL ist installiert (Linux, macOS oder Windows mit OpenSSL).
- Ein Arbeitsverzeichnis, z. B.:
```bash
cd /CertificateAuthCA
- Grundlegende Shell-Kenntnisse.
1. Eigene CA erstellen (einmalig)
Diesen Abschnitt führt man nur einmal aus. Die dabei erzeugte CA wird später genutzt, um alle Benutzerzertifikate zu signieren.
1.1 CA-Privatschlüssel erzeugen
openssl genrsa -des3 -out fb4ca.key 4096
- Es wird eine PEM-Passphrase für den CA-Schlüssel abgefragt.
- Datei:
fb4ca.key(geheimer privater Schlüssel der CA)
1.2 Self-signed CA-Zertifikat erzeugen
openssl req -new -x509 -days 3650 -key fb4ca.key -out fb4ca.crt
- Gültigkeit: 3650 Tage (~10 Jahre)
- Beim Prompt sinnvolle Angaben machen (Country, Organization, Common Name, etc.).
- Datei:
fb4ca.crt(öffentliches CA-Zertifikat, darf verteilt werden)
Die Dateien
fb4ca.keyundfb4ca.crtsind die Basis, um Nutzerzertifikate auszustellen.
2. Neuer Nutzer: Client-Zertifikat erstellen
Diese Schritte werden für jeden Benutzer wiederholt.
Im Beispiel wird der Benutzername tobiasB verwendet.
Übersicht
- Privaten Schlüssel des Benutzers erzeugen
- CSR (Certificate Signing Request) erstellen
- CSR mit der CA signieren → Benutzerzertifikat
.pfx(PKCS#12) erzeugen.pfxan den Benutzer ausliefern
2.1 Privaten Schlüssel für den Nutzer erzeugen
openssl genrsa -des3 -out tobiasB.key 2048
- Es wird eine PEM-Passphrase für den Benutzer-Schlüssel abgefragt.
- Datei:
tobiasB.key(privater Schlüssel, geheim!)
2.2 CSR (Certificate Signing Request) erstellen
openssl req -new -key tobiasB.key -out tobiasB.csr
- Eingabe der Subject-Daten (insbesondere
Common Name (CN), z. B. Benutzername oder E-Mail). - Das „Challenge Password“ kann in der Regel leer bleiben (einfach Enter).
- Datei:
tobiasB.csr(Antrag auf ein Zertifikat)
2.3 CSR mit CA signieren → Benutzerzertifikat
Im Verzeichnis der CA (fb4ca.key / fb4ca.crt):
openssl x509 -req -days 365 \
-in tobiasB.csr \
-CA fb4ca.crt \
-CAkey fb4ca.key \
-CAcreateserial \
-out tobiasB.crt \
-sha256
- Es wird die Passphrase der CA abgefragt.
- Gültigkeit des Benutzerzertifikats: 365 Tage (anpassbar).
-CAcreateserialerzeugt einmalig eine Seriennummer-Dateifb4ca.srl.
Für weitere Benutzer danach
-CAserial fb4ca.srlstatt-CAcreateserialverwenden, damit Seriennummern fortlaufend sind.
Beispiel für einen zweiten Benutzer janS:
openssl x509 -req -days 365 \
-in janS.csr \
-CA fb4ca.crt \
-CAkey fb4ca.key \
-CAserial fb4ca.srl \
-out janS.crt \
-sha256
2.4 PKCS#12-Datei (.pfx) für den Nutzer erzeugen
Damit der Benutzer das Zertifikat inkl. privatem Schlüssel einfach in sein System/den Browser importieren kann, wird ein PKCS#12-Container erzeugt:
openssl pkcs12 -export \
-out tobiasB.pfx \
-inkey tobiasB.key \
-in tobiasB.crt \
-certfile fb4ca.crt
- Es wird ein Export-Passwort für die
.pfx-Datei vergeben. - Inhalt der
.pfx:- privater Schlüssel des Nutzers (
tobiasB.key) - Nutzerzertifikat (
tobiasB.crt) - CA-Zertifikat (
fb4ca.crt)
- privater Schlüssel des Nutzers (
2.5 Übergabe an den Nutzer
Der Nutzer erhält:
- Datei:
tobiasB.pfx - Export-Passwort der
.pfx-Datei
Import durch den Nutzer (Beispiele):
- Windows:
- Doppelklick auf
tobiasB.pfx→ Zertifikatimport-Assistent - Zertifikat im Store „Eigene Zertifikate / Persönlich“ ablegen
- Doppelklick auf
- Firefox:
- Einstellungen → Datenschutz & Sicherheit → Zertifikate → „Zertifikate anzeigen“ → „Importieren“
- Chrome/Edge (Windows):
- nutzen den Windows-Zertifikatsspeicher
Zusätzlich sollte das CA-Zertifikat fb4ca.crt auf den Client-Systemen als vertrauenswürdige Stammzertifizierungsstelle importiert werden (sofern nicht bereits vorhanden).
3. Berechtigung auf der Webseite (mTLS)
Damit ein neuer Nutzer die geschützte Webseite aufrufen darf, müssen folgende Punkte erfüllt sein:
-
Webserver-Konfiguration
- Der Server verlangt ein Client-Zertifikat (mTLS).
- Der Server vertraut der CA
fb4ca.crtals ausstellende Instanz für Client-Zertifikate (z. B. überssl_client_certificateoderSSLVerifyClientje nach Webserver).
-
Client-Konfiguration
- Der Nutzer hat seine
.pfxerfolgreich importiert. - Das CA-Zertifikat
fb4ca.crtist als vertrauenswürdige CA hinterlegt.
- Der Nutzer hat seine
-
(Optional) Zugriffsteuerung
- Der Webserver oder die Anwendung prüft zusätzlich:
Subject(z. B.CN) des Client-Zertifikats,- oder den Fingerprint,
- oder andere Felder,
- und entscheidet darüber, ob der Benutzer Zugriff erhält (z. B. Whitelist der erlaubten CNs).
- Der Webserver oder die Anwendung prüft zusätzlich:
4. Zusammenfassung: Ablauf für einen neuen Nutzer
-
Privaten Schlüssel erzeugen
openssl genrsa -des3 -out <user>.key 2048 -
CSR erzeugen
openssl req -new -key <user>.key -out <user>.csr -
CSR mit CA signieren
-
Erstes Benutzerzertifikat (erzeugt
fb4ca.srl):openssl x509 -req -days 365 \ -in <user>.csr \ -CA fb4ca.crt \ -CAkey fb4ca.key \ -CAcreateserial \ -out <user>.crt \ -sha256 -
Weitere Benutzer (bestehende
fb4ca.srlwiederverwenden):openssl x509 -req -days 365 \ -in <user>.csr \ -CA fb4ca.crt \ -CAkey fb4ca.key \ -CAserial fb4ca.srl \ -out <user>.crt \ -sha256
-
-
PKCS#12-Datei (
.pfx) erzeugenopenssl pkcs12 -export \ -out <user>.pfx \ -inkey <user>.key \ -in <user>.crt \ -certfile fb4ca.crt -
.pfx+ Passwort an Nutzer übergeben; Nutzer importiert Zertifikat in sein System/Browser. -
Webserver so konfigurieren, dass:
- Client-Zertifikate verlangt werden,
- der CA
fb4ca.crtvertraut wird, - optional weitere Zugriffskontrolle anhand des Client-Zertifikats erfolgt.