OpenSSL PKI erstellen

OpenSSL PKI erstellen

OpenSSL Zertifizierungsstellen

Mithilfe von OpenSSL lässt sich schnell und einfach eine kleine PKI erstellen.

Die PKI besteht aus einer RootCA und einer SubCA. Die SubCA hat eine Pfadlänge von = 1, für den Fall, das darunter eine weitere austellende Zertifizierungsstelle existieren soll.

Die OpenSSL Konfigurationsdatei openssl.cfg habe ich durch ein paar weitere Optionen erweitert. Dazu gehören die Erweiterungen

  • v3_ica
  • v3_vpn_server
  • v3_vpn_client

Die Erweiterung v3_ca ist ebenfalls angepasst und entspricht nicht mehr dem Standard.

OpenSSL PKI erstellen

Zur Erstelllung einer eigene PKI habe alles nötige zusammen in das unten angehängte ZIP-File gepackt.

OpenSSL habe ich unter C:\OpenSSL installiert und im Ordner BIN folgende Unterordner angelegt:

OpenSSL Zertifikatsordner

Wenn die Ordner angelegt wurden, dann sind die Kommandos ohne Probleme einsatzbereit.

OpenSSL Kommandos

# RootCA
openssl.exe genrsa -aes256 -out .\RootCA\RootCA.key.pem 4096
openssl.exe req -config openssl.cfg -key .\RootCA\RootCA.key.pem -new -x509 -days 7400 -sha256 -extensions v3_ca -out .\RootCA\RootCA.cert.pem

OpenSSL PKI erstellen

# SubCA signiert durch RootCA
openssl.exe genrsa -out .\subca\SubCA.key 4096
openssl.exe req -new -key .\subca\SubCA.key -out .\subca\SubCA.csr
openssl.exe x509 -req -days 3650 -in .\subca\SubCA.csr -CA .\RootCA\RootCA.cert.pem -CAkey .\RootCA\RootCA.key.pem -CAcreateserial -out .\subca\SubCA.crt -extfile openssl.cfg -extensions v3_ica

OpenSSL SubCA Signiert durch OpenSSL RootCA

# Request für Server1 erstellen
openssl.exe genrsa -out .\ServerKeys\Server1.key -aes256
openssl.exe req -new -key .\ServerKeys\Server1.key -out .\requests\Server1.csr

OpenSSL Zertifikatsrequest erstellen

# Request von Server 1 signieren durch SubCA > Cert v1
openssl.exe x509 -req -days 730 -in .\requests\Server1.csr -CA .\SubCA\SubCA.crt -CAkey .\SubCA\SubCA.key -set_serial 0001 -out .\Certs\Server1.crt

Zertifikatsrequest signiert durch SubCA

# Request von Server 1 signieren durch SubCA > Cert v3
openssl.exe x509 -req -days 730 -in .\requests\Server1.csr -CA .\SubCA\SubCA.crt -CAkey .\SubCA\SubCA.key -set_serial 0002 -out .\Certs\Server1.crt -extensions v3_ext -extfile .\ext3.cfg

OpenSSL Zertifikat Version 3

Für die Signierung und der Nutzung der V3 Eweiterung liegt dem ganzen eine separate Konfigurationsdatei bei. Die Config-Datei heißt ext3.cfg.

SubCA signiert ZertifikatsanfrageOpenSSL V3 Erweiterung

# Server1 Zertifikat in PFX umwandeln
openssl.exe pkcs12 -export -out .\ServerKeys\Server1.pfx -inkey .\ServerKeys\Server1.key -in Certs\Server1.crt

Zertifikat in PFX umwandeln

# Bilden einer Zertifikatskette aus RootCA und SubCA
type .\subca\SubCA.crt .\RootCA\RootCA.cert.pem > certs\CA-Chain.pem

Bilden einer Zertifikatskette aus RootCA und SubCA

# Server1 Zertifikat in PFX umwandeln und Chain bilden
openssl.exe pkcs12 -export -out .\ServerKeys\Server1.pfx -inkey .\ServerKeys\Server1.key -in Certs\Server1.crt -certfile .\Certs\CA-Chain.pem

Zertifikat in PFX umwandeln und Chain bilden

# Das Zertifikat ist nun vertrauenswürdig und gültig.

Zertifikat gültigOpenSSL Zertifikatskette

Für eine Bewertung bei Google wäre ich dankbar.

https://g.page/der-windows-papst/review?rc

OpenSSL Paket