ID #1129

SSL-Zertifikat selbst erzeugen

Ein SSL-Zertifikat für den Apache Webserver kann sehr schnell und leicht selbst erzeugt werden. Der einfachste Fall ist hier die Erzeugung eines selbstsignierten Zertifikats. Beim Zugriff auf eine Site, die mit einem solchen Zertifikat ausgestattet ist, wird ein Browser bei jedem Zugriff die Meldung bzw. eine Dialogbox ausgeben, die den Benutzer darüber informiert, daß das Zertifikat nicht bekannt und somit nur eingeschränkt vertrauenswürdig ist.

Diese Meldung kann mit Installation des Zertifikats im Clientbrowser verhindert werden. Alternativ kann auch ein Zertifikat erzeugt werden, daß von einer CA (Certification Authority) signiert wurde. Jetzt muß nur noch das CA-Zertifikat im Browser installiert werden, der dann alle von dieser CA signierten Zertifikate aktzeptiert. Die von den meisten Besuchern einer Webiste genutzten Browser Firefox und Microsoft Internet Explorer haben die CA-Zertifikate diverser Certification Authorities vorinstalliert, so daß ein von diesen signiertes Zertifikat (in der Defaulteinstellung) von den Browsern ohne Meldung akzeptiert wird.

Ein selbstsigniertes Zertifikat erzeugen

Das selbstsignierte Zertifikat erspart den Aufwand der Verwaltung einer CA oder die Kosten, wenn das Zertifikat von einer externen CA signiert wird. Die Erzeugung dieses Zertifikats erfolgt mit

 	openssl req -new -x509 -days 365 -keyout server-rsa-key.pem -out server-cert.pem

Ein von der CA signiertes Zertifikat erzeugen

Bei Nutzung eines von einer CA signierten Zertifikats wird zuerst ein Certificate Signing Request (CSR) erzeugt. Der CSR wird von der CA signiert und zurückgeschickt. Dieses Zertifikat kann dann auf dem Server installiert werden. Der CSR wird zusammen mit dem Private Key mit Hilfe von OpenSSL erzeugt:

openssl req -new -keyout server-rsa-key.pem -out server-req.pem -days 365

Wichtig ist hier, daß der korrekte Hostname des Virtuellen Hosts bei der Frage nach dem Common Name (CN) angegeben wird. Die Datei server-req.pem wird dann an die Root CA geschickt.

Den Key entschlüsseln

Wenn ein Key in verschlüsselter Form vorliegt (und mit einer Passphrase gesichert ist), muß die Passphrase bei jedem Neustart des Apache Daemons neu eingegeben werden. Wenn der Key im Klartext vorliegt, ist das nicht notwendig. Um Key zu entschlüsseln und die Passphrase zu entfernen ist der folgende Aufruf notwendig:

openssl rsa -in server-rsa-key.pem > server-key.pem

Die Passphrase wird noch einmal benötigt, um den Key zu entschlüsseln. Jetzt kann der Key geladen werden, ohne das eine Passphrase abgefragt wird.

Dann werden der Key und das zugehörige Zertifikat in das ssl Verzeichnis der Apache-Konfiguration (z.B. /etc/apache2/ssl/) verschoben.

In der httpd.conf werden Key und Zertifikat in der VHost konfiguration für den SSL-VHost eingestellt:

SSLCertificateFile /etc/apache2/ssl/server-cert.pem

SSLCertificateKeyFile /etc/apache2/ssl/server-key.pem

Weitere Konfigurationseinstellungen sind in der Konfigurationsdatei des Apache bzw. in mod_ssl ausführlich kommentiert.

Beispielkonfiguration für Apache 2.x

ServerName www.topnetworks.de

ServerAlias topnetworks.de.de

DocumentRoot /var/www

SSLEngine on SSLCertificateFile /etc/apache2/ssl/server-cert.pem

SSLCertificateKeyFile /etc/apache2/ssl/server-key.pem

SSLOptions +StdEnvVars

SSLOptions +StdEnvVars

In der Datei /etc/apache2/ports.conf muss noch ein Listen 443 eingetragen werden, damit der Apache nun auch auf dem Port für HTTPS-Anfragen lauscht.

Tags: Apache, mod_ssl, selbstsigniertes Zertifikat erzeugen, SSL, SSL-Zertifikat, Webserver

Related entries:

You can comment this FAQ