PKI-Lab mit Root-CA und Teilnehmer-CA: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
=PKI-Lab mit Root-CA und Teilnehmer-CAs=
+
=PKI mit Root-CA und Sub-CA (Beispiel it213)=
  
In diesem Lab wird eine einfache Public Key Infrastructure aufgebaut.
+
In diesem Beispiel wird eine einfache PKI aufgebaut.
Der Trainer betreibt eine Root-CA. Die Teilnehmer erstellen eigene CAs, die von der Root-CA signiert werden.
+
Der Trainer betreibt eine Root-CA.
Mit diesen Teilnehmer-CAs werden anschließend Server-Zertifikate erzeugt.
+
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 (Trainer)==
+
==Root-CA erstellen==
Der Trainer erzeugt eine selbstsignierte Root-CA.
+
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"
 
*openssl req -new -x509 -newkey rsa:4096 -nodes -keyout ca.key -out ca.crt -days 3650 -subj "/CN=Kit Root CA"
  
Das Zertifikat wird anschließend angezeigt und kontrolliert.
+
Das Zertifikat kann anschließend kontrolliert werden.
  
 
*openssl x509 -in ca.crt -text -noout
 
*openssl x509 -in ca.crt -text -noout
Zeile 16: Zeile 17:
  
 
==Root-CA auf Clients installieren==
 
==Root-CA auf Clients installieren==
Damit Clients Zertifikaten vertrauen, die von dieser PKI ausgestellt werden,
+
Damit Clients den Zertifikaten vertrauen, muss die Root-CA im Trust-Store installiert werden.
muss die Root-CA im Trust-Store des Systems installiert werden.
 
  
 
===Debian===
 
===Debian===
 +
*cp ca.crt /usr/local/share/ca-certificates/
 +
 
Das Root-Zertifikat wird in den lokalen CA-Speicher kopiert.
 
Das Root-Zertifikat wird in den lokalen CA-Speicher kopiert.
  
*cp ca.crt /usr/local/share/ca-certificates/
+
*update-ca-certificates
  
 
Der Trust-Store wird aktualisiert.
 
Der Trust-Store wird aktualisiert.
  
*update-ca-certificates
 
  
 +
===Rocky / RHEL===
 +
*cp ca.crt /etc/pki/ca-trust/source/anchors/
  
===Rocky / RHEL===
 
 
Das Root-Zertifikat wird in den Anchor-Store kopiert.
 
Das Root-Zertifikat wird in den Anchor-Store kopiert.
  
*cp ca.crt /etc/pki/ca-trust/source/anchors/
+
*update-ca-trust extract
  
 
Der System Trust Store wird neu erzeugt.
 
Der System Trust Store wird neu erzeugt.
 
*update-ca-trust extract
 
  
  
==Teilnehmer erstellt CA Request (Beispiel it213)==
+
==Sub-CA Request erzeugen (Beispiel it213)==
Der Teilnehmer erzeugt einen privaten Schlüssel und eine Certificate Signing Request
+
Der Teilnehmer erzeugt einen privaten Schlüssel und eine Certificate Signing Request für seine CA.
für seine eigene CA.
 
  
 
*openssl req -new -newkey rsa:4096 -nodes -keyout it213-ca.key -out it213-ca.csr -subj "/CN=it213 Lab CA"
 
*openssl req -new -newkey rsa:4096 -nodes -keyout it213-ca.key -out it213-ca.csr -subj "/CN=it213 Lab CA"
  
  
==Trainer signiert Teilnehmer-CA==
+
==Sub-CA durch Root signieren==
 
Die Root-CA signiert die Teilnehmer-CA. Dadurch entsteht die Zertifikatskette.
 
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 365
 
*openssl x509 -req -in it213-ca.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out it213-ca.crt -days 365
  
 +
Das signierte CA-Zertifikat kann kontrolliert werden.
  
==Teilnehmer prüft seine CA==
+
*openssl x509 -in it213-ca.crt -text -noout
Der Teilnehmer kontrolliert sein signiertes CA-Zertifikat.
 
  
*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==
 
==Server-Schlüssel und CSR erzeugen==
Der Teilnehmer erzeugt einen privaten Schlüssel und eine CSR für seinen Webserver.
+
Der Teilnehmer erzeugt einen Schlüssel und eine CSR für seinen Server.
  
 
*openssl req -new -newkey rsa:2048 -nodes -keyout web.key -out web.csr -subj "/CN=web.it213.lab"
 
*openssl req -new -newkey rsa:2048 -nodes -keyout web.key -out web.csr -subj "/CN=web.it213.lab"
Zeile 65: Zeile 75:
  
 
==Server-Zertifikat signieren==
 
==Server-Zertifikat signieren==
Die Teilnehmer-CA signiert das Server-Zertifikat.
+
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
 
*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.
  
==Zertifikat prüfen==
+
*cat web.crt it213-ca.crt > fullchain.pem
Das fertige Server-Zertifikat wird angezeigt.
 
  
*openssl x509 -in web.crt -text -noout
+
Die Reihenfolge ist wichtig:
 +
 
 +
web.crt
 +
it213-ca.crt
  
  
 
==Zertifikatskette prüfen==
 
==Zertifikatskette prüfen==
Die komplette Zertifikatskette wird überprüft.
+
Die komplette Zertifikatskette kann mit OpenSSL überprüft werden.
  
 
*openssl verify -CAfile ca.crt -untrusted it213-ca.crt web.crt
 
*openssl verify -CAfile ca.crt -untrusted it213-ca.crt web.crt
  
  
==PKI-Struktur im Lab==
+
==PKI-Struktur==
 
Kit Root CA
 
Kit Root CA
├── it201-ca
 
├── it202-ca
 
├── it203-ca
 
├── ...
 
 
  └── it213-ca
 
  └── it213-ca
 
       └── web.it213.lab
 
       └── web.it213.lab
  
Die Root-CA signiert die Teilnehmer-CAs.
+
Der Client kennt die Root-CA aus dem Trust-Store.
Die Teilnehmer-CAs signieren anschließend ihre eigenen Server-Zertifikate.
+
Der Server liefert beim TLS-Handshake das Server-Zertifikat und die Sub-CA. 
 +
Der Client kann damit die vollständige Zertifikatskette prüfen.

Version vom 13. März 2026, 12:54 Uhr

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 365

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 web.key -out web.csr -subj "/CN=web.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.