Zertifikat für admin.ekey Zugang

Dieser Leitfaden beschreibt, wie mit OpenSSL eine eigene Certificate Authority (CA) betrieben und daraus Client-Zertifikate für Benutzer erstellt werden, um z. B. eine Webseite per mTLS (Client-Zertifikatsauthentifizierung) zugänglich zu machen.


Übersicht

  1. Einmalig: CA-Schlüssel und CA-Zertifikat erstellen
  2. Für jeden neuen Nutzer:
    • privaten Schlüssel erzeugen
    • CSR (Certificate Signing Request) erzeugen
    • CSR mit der CA signieren → Benutzerzertifikat
    • Benutzerzertifikat + Key + CA-Zertifikat als .pfx exportieren
  3. Nutzer importiert .pfx im Betriebssystem / Browser
  4. Webserver ist so konfiguriert, dass er:
    • Client-Zertifikate verlangt
    • der eigenen CA vertraut
    • (optional) bestimmte Nutzer anhand des Zertifikats freischaltet

Voraussetzungen

cd /CertificateAuthCA

1. Einmalig: eigene CA erstellen

Um einen neuen Nutzer zu Berechtigen wird dieser Schritt NICHT benötigt

Diesen Schritt führst du nur einmal aus.
Er erzeugt den privaten CA-Schlüssel und ein selbstsigniertes Root-Zertifikat.

# 1.1 CA-Privatschlüssel erzeugen
openssl genrsa -des3 -out fb4ca.key 4096
# 1.2 Self-signed Root-CA-Zertifikat erzeugen
openssl req -new -x509 -days 3650 -key fb4ca.key -out fb4ca.crt

Die Dateien:


2. Für jeden neuen Nutzer: Zertifikat ausstellen

Im Folgenden wird <user> als Platzhalter verwendet, z. B. tobiasB oder janS.

2.1 Privaten Schlüssel für den Nutzer erzeugen

openssl genrsa -des3 -out <user>.key 2048

Beispiel:

openssl genrsa -des3 -out tobiasB.key 2048

2.2 CSR (Certificate Signing Request) für den Nutzer erzeugen

openssl req -new -key <user>.key -out <user>.csr

Beispiel:

openssl req -new -key tobiasB.key -out tobiasB.csr

2.3 CSR mit der CA signieren → Nutzerzertifikat

Dieser Schritt wird auf dem System ausgeführt, auf dem die CA liegt (fb4ca.key und fb4ca.crt).

openssl x509 -req -days 365 \
  -in <user>.csr \
  -CA fb4ca.crt \
  -CAkey fb4ca.key \
  -CAcreateserial \
  -out <user>.crt \
  -sha256

Wichtig:

Beispiel für erstes Nutzerzertifikat:

openssl x509 -req -days 365 \
  -in tobiasB.csr \
  -CA fb4ca.crt \
  -CAkey fb4ca.key \
  -CAcreateserial \
  -out tobiasB.crt \
  -sha256

Beispiel für weiteres Nutzerzertifikat (wenn fb4ca.srl existiert):

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

Um dem Benutzer ein importierbares Paket aus Key + Zertifikat + CA zu liefern, wird eine .pfx (PKCS#12) erstellt:

openssl pkcs12 -export \
  -out <user>.pfx \
  -inkey <user>.key \
  -in <user>.crt \
  -certfile fb4ca.crt

Beispiel:

openssl pkcs12 -export \
  -out tobiasB.pfx \
  -inkey tobiasB.key \
  -in tobiasB.crt \
  -certfile fb4ca.crt

Die .pfx-Datei enthält:


3. Nutzung durch den Nutzer

3.1 Dateien und Passwörter an den Nutzer

Der Nutzer erhält:

3.2 Import der .pfx beim Nutzer

Je nach Umgebung (Beispiele):

3.3 CA-Zertifikat vertrauen

Damit die Client-Zertifikate als gültig erkannt werden, muss die CA (fb4ca.crt) als vertrauenswürdige Stammzertifizierungsstelle importiert sein (falls nicht bereits geschehen):


4. Berechtigung auf der Webseite / im Webserver

Damit ein Nutzer tatsächlich auf die geschützte Webseite zugreifen kann, muss der Webserver:

  1. Client-Zertifikate verlangen (mTLS-Authentifizierung):
    • z. B. in Apache SSLVerifyClient require
    • Nginx ssl_verify_client on;
  2. Der Webserver muss die eigene CA (fb4ca.crt) als trusted client CA kennen:
    • z. B. Apache SSLCACertificateFile fb4ca.crt
    • Nginx ssl_client_certificate fb4ca.crt;
  3. Optional: Zugriffe auf bestimmte Zertifikate einschränken, z. B.:
    • anhand des CN im Zertifikat
    • anhand von Subject Alternative Names (SAN)
    • anhand des Zertifikat-Fingerprints

Die konkrete Konfiguration hängt vom eingesetzten Webserver (Apache, Nginx, IIS, …) bzw. der Anwendung ab.


5. Kurzablauf für einen neuen Nutzer (Cheat Sheet)

# 1) Nutzer-Key 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 Zertifikat: -CAcreateserial)
openssl x509 -req -days 365 \
  -in <user>.csr \
  -CA fb4ca.crt \
  -CAkey fb4ca.key \
  -CAcreateserial \
  -out <user>.crt \
  -sha256

# (weitere Nutzer optional mit -CAserial fb4ca.srl)

# 4) PFX für Nutzer erzeugen
openssl pkcs12 -export \
  -out <user>.pfx \
  -inkey <user>.key \
  -in <user>.crt \
  -certfile fb4ca.crt

Danach:


Revision #4
Created 22 April 2026 09:28:53 by Tobi
Updated 22 April 2026 09:48:29 by Tobi