PKI-Lab mit Root-CA und Teilnehmer-CA

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

PKI mit Root-CA und Sub-CA (Beispiel it213)

In diesem Beispiel wird eine einfache PKI aufgebaut. Der Trainer betreibt eine Root-CA. Die Teilnehmer erzeugen eine Sub-CA, die von der Root-CA signiert wird. Mit dieser Sub-CA werden anschließend Server-Zertifikate signiert.

Root-CA erstellen

Die Root-CA ist der Vertrauensanker der PKI und ist selbstsigniert.

  • openssl req -new -x509 -newkey rsa:4096 -nodes -keyout ca.key -out ca.crt -days 3650 -subj "/CN=Kit Root CA"

Das Zertifikat kann anschließend kontrolliert werden.

  • openssl x509 -in ca.crt -text -noout


Root-CA auf Clients installieren

Damit Clients den Zertifikaten vertrauen, muss die Root-CA im Trust-Store installiert werden.

Debian

  • cp ca.crt /usr/local/share/ca-certificates/

Das Root-Zertifikat wird in den lokalen CA-Speicher kopiert.

  • update-ca-certificates

Der Trust-Store wird aktualisiert.


Rocky / RHEL

  • cp ca.crt /etc/pki/ca-trust/source/anchors/

Das Root-Zertifikat wird in den Anchor-Store kopiert.

  • update-ca-trust extract

Der System Trust Store wird neu erzeugt.


Sub-CA Request erzeugen (Beispiel it213)

Der Teilnehmer erzeugt einen privaten Schlüssel und eine Certificate Signing Request für seine CA.

  • openssl req -new -newkey rsa:4096 -nodes -keyout it213-ca.key -out it213-ca.csr -subj "/CN=it213 Lab CA"


Sub-CA durch Root signieren

  • Die Root-CA signiert die Teilnehmer-CA. Dadurch entsteht die Zertifikatskette.
  • openssl x509 -req -in it213-ca.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out it213-ca.crt -days 1460 -extfile <(printf "basicConstraints=CA:TRUE\nkeyUsage=keyCertSign,cRLSign")
  • Das signierte CA-Zertifikat kann kontrolliert werden.
  • openssl x509 -in it213-ca.crt -text -noout

Hinweis zum privaten Schlüssel

Der private Schlüssel der CA wird nur zum Signieren von Zertifikaten benötigt. Zum Prüfen der Zertifikatskette werden nur die öffentlichen Zertifikate verwendet.

Beispiel:

web.crt it213-ca.crt ca.crt

Die Prüfung erfolgt über die Signaturen der Zertifikate.


Server-Schlüssel und CSR erzeugen

Der Teilnehmer erzeugt einen Schlüssel und eine CSR für seinen Server.

  • openssl req -new -newkey rsa:2048 -nodes -keyout www.it213.lab.key -outwww.it213.lab.csr -subj "/CN=www.it213.lab"

Server-Zertifikat signieren

Die Sub-CA signiert das Server-Zertifikat.

  • openssl x509 -req -in web.csr -CA it213-ca.crt -CAkey it213-ca.key -CAcreateserial -out web.crt -days 365

Das Server-Zertifikat kann kontrolliert werden.

  • openssl x509 -in web.crt -text -noout


Fullchain erstellen

Damit Clients die Zertifikatskette aufbauen können, muss der Server die Intermediate-CA mitliefern.

Dazu wird eine Fullchain-Datei erstellt.

  • cat web.crt it213-ca.crt > fullchain.pem

Die Reihenfolge ist wichtig:

web.crt it213-ca.crt


Zertifikatskette prüfen

Die komplette Zertifikatskette kann mit OpenSSL überprüft werden.

  • openssl verify -CAfile ca.crt -untrusted it213-ca.crt web.crt


PKI-Struktur

Kit Root CA

└── it213-ca
     └── web.it213.lab

Der Client kennt die Root-CA aus dem Trust-Store. Der Server liefert beim TLS-Handshake das Server-Zertifikat und die Sub-CA. Der Client kann damit die vollständige Zertifikatskette prüfen.