Skip to main content

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.key und fb4ca.crt sind 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

  1. Privaten Schlüssel des Benutzers erzeugen
  2. CSR (Certificate Signing Request) erstellen
  3. CSR mit der CA signieren → Benutzerzertifikat
  4. .pfx (PKCS#12) erzeugen
  5. .pfx an 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).
  • -CAcreateserial erzeugt einmalig eine Seriennummer-Datei fb4ca.srl.

Für weitere Benutzer danach -CAserial fb4ca.srl statt -CAcreateserial verwenden, 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)

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
  • 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:

  1. Webserver-Konfiguration

    • Der Server verlangt ein Client-Zertifikat (mTLS).
    • Der Server vertraut der CA fb4ca.crt als ausstellende Instanz für Client-Zertifikate (z. B. über ssl_client_certificate oder SSLVerifyClient je nach Webserver).
  2. Client-Konfiguration

    • Der Nutzer hat seine .pfx erfolgreich importiert.
    • Das CA-Zertifikat fb4ca.crt ist als vertrauenswürdige CA hinterlegt.
  3. (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).

4. Zusammenfassung: Ablauf für einen neuen Nutzer

  1. Privaten Schlüssel erzeugen

    openssl genrsa -des3 -out <user>.key 2048
    
  2. CSR erzeugen

    openssl req -new -key <user>.key -out <user>.csr
    
  3. 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.srl wiederverwenden):

      openssl x509 -req -days 365 \
        -in <user>.csr \
        -CA fb4ca.crt \
        -CAkey fb4ca.key \
        -CAserial fb4ca.srl \
        -out <user>.crt \
        -sha256
      
  4. PKCS#12-Datei (.pfx) erzeugen

    openssl pkcs12 -export \
      -out <user>.pfx \
      -inkey <user>.key \
      -in <user>.crt \
      -certfile fb4ca.crt
    
  5. .pfx + Passwort an Nutzer übergeben; Nutzer importiert Zertifikat in sein System/Browser.

  6. Webserver so konfigurieren, dass:

    • Client-Zertifikate verlangt werden,
    • der CA fb4ca.crt vertraut wird,
    • optional weitere Zugriffskontrolle anhand des Client-Zertifikats erfolgt.