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.