Eine eigene SSL Zertifizierungsstelle (Root CA) für die Nutzung im LAN erstellen - Teil II

Interne Zertifikate erzeugen

Im ersten Teil haben wir ein Root-Zertifikat für unsere eigene SSL Zertifizierungsstelle erzeugt. Wir sind nun in der Lage, nach Belieben SSL-Zertifikate zu erzeugen, denen unser Browser vertrauen wird (nachdem wir unsere Zertifizierungsstelle innerhalb unseres Netzwerks bekannt gemacht haben).
Wir werden uns nun Schritt für Schritt an die Erzeugung eines Zertifikates für einen Apache Webserver machen und uns ansehen, wie der Virtual Host konfiguriert werden muss.


Es gelten wieder folgende Annahmen:

Hostname des CA-Servers:cert.mein-netz.local
Host, für den ein Zertifikat erzeugt werden soll:client.mein-netz.local

Auf dem Webserver erzeugen wir im Verzeichnis /etc/ssl/certs/ ein Unterverzeichnis mit dem Hostnamen. Die Struktur sollte nun so aussehen:
/etc/ssl/certs/client.mein-netz.local


Schritt I – Privaten Schlüssel erzeugen

Auf dem Webserver, für den das Zertifikat benötigt wird, muss zunächst ein privater OpenSSL-Schlüssel erzeugt werden. Im Verzeichnis /etc/ssl/certs/client.mein-netz.local wird folgendes ausgeführt

root@client:/etc/ssl/certs/client.mein-netz.local# openssl genrsa -out client.mein-netz.local.key 4096

Dabei wird nun ein 4096 Bit starker privater Schlüssel erzeugt.

Auf Geräten wie ggf. Switches etc. muss das integrierte Verfahren genutzt werden.

Schritt II – Zertifikatsanforderungsskript (CSR – Certificate Signing Request) erzeugen

Im nächsten Schritt muss das Zertifikatsanforderungsscript erzeugt werden. Dies wird so gemacht:

root@client:/etc/ssl/certs/client.mein-netz.local# openssl req -new -key client.mein-netz.local.key -out client.mein-netz.local.csr
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value, If you enter '.', the field will be left blank.
 -----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:BW
Locality Name (eg, city) []:Eningen u.A.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ACME, Inc.
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:client.mein-netz.local
Email Address []:admin@wasauchimmer.com
 
Please enter the following 'extra'attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:


Es sollte kein Challenge-Passwort angegeben werden, da dies sonst bei jedem Start des Webservers vom Dienst abgefragt werden würde.

Schritt III – Das eigentliche SSL-Zertifikat erzeugen

Mithilfe des  erzeugten Zertifikatsanforderungsscripts (CSR) kann nun das eigentliche Zertifikat von der Zertifizierungsstelle generiert werden. Hierzu muss die *.csr-Datei auf den Host cert.mein-netz.local kopiert werden (nach/etc/ssl/myCA/). Nun wird folgender Befehl ausgeführt:

openssl x509 -req -in client.mein-netz.local.csr -CA myCA-root.pem -CAkey myCA-key.pem -CAcreateserial -out client.mein-netz.local.pem -days 365 -sha512

Dies erzeugt nun das eigentliche Zertifikat mit einer Gültigkeit von 365 Tagen. Falls bei der Erzeugung der Root-CA ein Passwort vergeben wurde, wird dieses nun abgefragt.

Um sich Konfigurationsaufwand im Apache Webserver zu sparen, kann der öffentliche Schlüssel der Root-CA an das Hostzertifikat angehängt werden. Dies geschieht mit

cat myCA-root.pem >> client.mein-netz.local.pem

Nun kann das Zertifikat in den Apache Webserver (auf client.mein-netz.local) eingebaut werden.

In der Konfigurationsdatei für den SSL-Teil muss folgendes aufgenommen werden:

SSLCertificateFile		/etc/ssl/certs/client.mein-netz.local.pem
SSLCertificateKeyFile	/etc/ssl/certs/client.mein-netz.local.key

Abschließend muss der Webserver neu gestartet werden (Debian/Ubuntu: service apache2 restart).

Zertifikat erneuern

Soll das Zertifikat erneuert werden ohne zunächst einen neuen Schlüssel und ein neues Anforderungsskript (CSR) erzeugen zu müssen, so kann dies einfach mithilfe des bereits bestehenden CSR wie in Schritt III gemacht werden.


So geht’s weiter:

  • In Teil III verteilen wir das Root-Zertifikat innerhalb der Windows Domäne über das ADS und schauen uns an, wie wir Mozilla Firefox dazu bewegen, unserer Root CA zu vertrauen
  • In Teil IV stelle ich eine von mir entwickelte Web GUI vor, mit deren Hilfe man interne Zertifikate bequem erzeugen und mittels des CSR auch verlängern kann.

3 Gedanken zu „Eine eigene SSL Zertifizierungsstelle (Root CA) für die Nutzung im LAN erstellen - Teil II“

  1. Hey Mark,
    Vielen Dank für deine Ausführungen zur eigenen CA Zertifizierungsstelle. Ich würde mich freuen wenn Teil 3 und 4 ebenfalls noch veröffentlicht werden. Da ich gerade genau daran scheitere und meine internen Dienste gerne mit ssl sichern würde.
    Viele Grüße
    Björn

    Antworten

Schreibe einen Kommentar