= Apache =

Den [Apache|http://www.apache.org] hier vorzustellen, hiesse Eulen nach Athen tragen.Hier aber einige wichtige Punkte. Die Einrichtung von [VirtualHosts|ApacheVirtualHosts] hat eine eigene Seite bekommen.
== SSL ==

Wer verschlüsselte Verbindungen per SSL haben möchte muss das Passende Modul im Apache aktiviert haben. Zuvor ist aber einiges an Vorarbeit zu leisten.

=== Erzeugung eines Zertifikats  ===

Als erstes muss man eine Schlüsseldatei erzeugen:
{{{
  openssl genssl >key.pem
}}}

Dann kann man mit deren Hilfe ein selbst-signiertes Zertifikat
erstellen:
{{{
  openssl req -new -x509 -key key.pem -out mein.server.loc.pem -days 1095
}}}

(1095 Tage sind drei Jahre, das ist die Gültigkeit des Zertifikats)
Der Witz dabei ist, daß man als Namen (''YOUR Name'') den
Domainnamen des Webservers angibt, auf den man nachher zugreifen
will. Es empfiehlt sich, dafür zu sorgen, daß wirklich nur ein Name
benutzt wird. (Also z.B. nicht mit und ohne Domain).

Dieses Zertifikat kann man dann nach ''/usr/lib/ssl/certs/''
kopieren, wo openssl es dann problemlos findet.

Die Konfiguration liegt in älteren Apache-Installationen in __/etc/apache-ssl/httpd.conf__. Dort
sucht man den Befehl __~SSLCertificateFile__ und gibt den
Dateinamen des Zertifikates an.

In neueren Apache-Versionen (ich habe dies mit einem 2.2 getestet) ist die Konfiguration in mehrere Dateien aufgeteilt. Man muss in getrennten Dateien das ssl-Modul laden, den Port 443 aktivieren und dann zwei virtuelle Hosts erzeugen, von denen einer Port 80 und einer Port 443 und SSL benutzt. Das wird kurz und knapp in http://venthur.de/Linux/ApacheSSLHOWTO erklärt.

vgl. auch OpenSSL

=== SSL und virtuelle Domains ===

Beides zusammen ist leider gar nicht einfach. Im Gegenteil - aus
protokolltechnischen Gründen ist es sogar eigentlich unmöglich. Die
Auswahl unterschiedlicher SSL-Zertifikate funktioniert nur anhand
unterschiedlicher IP-Adressen oder Ports, nicht anhand des Namens
(siehe http://www.modssl.org/docs/2.8/ssl_faq.html#ToC47). Als
Notlösung kann man jedoch mit der __Listen__-Direktive den Server
auf unterschiedlichen Ports lauschen lassen und diese dann in der
~VirtualHost-Direktive angeben. Innerhalb des ~VirtualHost-Blocks
kommt dann der ~SSLCertificateFile-Befehl.

Es geht aber doch: In einem Zertifikat können mehrere Common Names oder Aliases
hinterlegt sein!\\
vgl. auch OpenSSL

----
__Links__

* Ein gutes [HOWTO|http://www.jfranken.de/homepages/johannes/vortraege/apache_inhalt.de.html] zum Apache 2.x

[{Tag Apache SSL ServerDienste}]