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.
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
Hallo,
genau darauf warte ich auch. Würde mich ebenfalls freuen.