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

[codeblock name=’Block_1′]

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:

[codeblock name=’Block_2′]
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:

[codeblock name=’Block_3′]

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

[codeblock name=’Block_4′]
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:

[codeblock name=’Block_5′]

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