Ein Apache-Zertifikat kann wie oben beschrieben erstellt 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 Mozilla (ehemals Netscape) 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.
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
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.
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.pemDie 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/httpd/ssl/) verschoben.
In der httpd.conf werden Key und Zertifikat in der VHost konfiguration für den SSL-VHost eingestellt:
SSLCertificateFile /etc/httpd/ssl/server-cert.pem SSLCertificateKeyFile /etc/httpd/ssl/server-key.pem
Weitere Konfigurationseinstellungen sind in der Konfigurationsdatei
eines Apache mit eincompiliertem SSL-Suppoert (apache-ssl) bzw. mit
mod_ssl
ausführlich kommentiert.
<VirtualHost www.werthmoeller.de:443> ServerName www.werthmoeller.de ServerAlias werthmoeller.de DocumentRoot /var/www SSLEngine on SSLCertificateFile /etc/apache/ssl/server-cert.pem SSLCertificateKeyFile /etc/apache/ssl/server-key.pem <Files ~ "\.(cgi|shtml)$"> SSLOptions +StdEnvVars </Files> <Directory "/usr/lib/cgi-bin"> SSLOptions +StdEnvVars </Directory> </VirtualHost>
Beim Microsoft Internet Explorer sind neben den gravierenden Sicherheitsproblemen auch diverse Bugs in der SSL Implementierung bekannt geworden. Bei Anzeigeproblemen sollte die Zeile
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdownin die Konfigurtion aufgenommen werden. Fall immer noch Anzeigeprobleme mit dem Internet Explorer bestehen, sollte auf der Serverseite für den Internet Explorer nur die Protokollversionen SSL 2.0 und SSL 3.0 aktiviert und TLS 1.0 deaktiviert werden. Alternativ kann versucht werden den Internet Explorer so zu konfigurieren, daß nur SSL 2.0 und SSL 3.0 genutzt werden. Das Empfehlenswerteste ist jedoch auf einen Browser auszuweichen, der den SSL Standard fehlerfrei unterstüzt.