!!! Apache
Den Apache hier vorzustellen, hiesse Eulen nach Athen tragen. Daher
gibts alle Infos unter http://www.apache.org und hier nur ein paar Infos
zu besonderen Themen:
Die Einrichtung von ApacheVirtualHosts hat eine eigene Seite bekommen.
!! SSL
Wer verschlüsselte Verbindungen per SSL haben möchte, kann dazu
zwei Wege beschreiten. Es gibt ein __mod_ssl__-Modul, das im
Apache wie andere Module geladen werden kann und es gibt eine
SSL-fähige Apache-Version namens __apache-ssl__. Scheinbar ist es
reine Geschmackssache, welche Lösung man benutzt und auch die
Konfigurationsbefehle scheinen ähnlich zu sein. Ich habe hier mit
dem Debian-Paket "apache-ssl" herumgespielt und dabei folgendes
herausgefunden:
! Erzeugung eines Zertifikats
Wenn man apache-ssl installiert, wird man nach einigen Angaben für
das Zertifikat gefragt. Dort hat man schnell was falsches
eingegeben. Außerdem ist das dort erzeugte Zertifikat natürlich
auch recht schnell abgelaufen. Deshalb ist es sinnvoll, zu wissen,
wie man eigene Zertifikate erstellt. Dies ist natürlich
insbesondere nötig, wenn man mehrere virtuelle Domains versorgen
will.
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
! Alternativen
Der Apache ist sicherlich der am weitesten verbreitete Webserver.
In speziellen Anwendungsfällen, d.h. immer, wenn die Hauptaufgabe
nicht aus dem Ausliefern von statischen Webseiten besteht, können
aber auch Alternativen herangezogen werden. Für Java-Anwendungen
bietet sich zum Beispiel der TomcatUnterDebian an. Sehr gut
geeignet ist der Apache auch, um solche spezialisierten Lösungen
miteinander zu verbinden, indem z.B. Anfragen an eine
Java-Applikation an einen Tomcat "durchgereicht" werden.
-- ThomasBayen
! Links
* http://www.jfranken.de/homepages/johannes/vortraege/apache_inhalt.de.html - Ein gutes HOWTO zum Apache 2.2
[{Tag Apache SSL ServerDienste}]