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:

Virtual Hosts #

Wer mehrere verschiedene Webauftritte auf einem einzelnen Rechner unterbringen will, kann dies mit sogenannten "Virtual Hosts" tun. Dabei wird ein und derselbe Rechner unter unterschiedlichen DNS-Namen aufgerufen und der Benutzer bekommt jedesmal einen komplett anderen Webauftritt zu sehen.

Im Prinzip konfiguriert man dies in der Datei /etc/apache/httpd.conf folgendermassen:

  NameVirtualHost *
  <VirtualHost *>
        ServerName localhost
        DocumentRoot /var/www
  </VirtualHost>

  <VirtualHost *>
        ServerName jens
        DocumentRoot /home/jens/public_html/
        ScriptAlias /cgi-bin/ /home/jens/public_html/cgi-bin/
  </VirtualHost>

  <VirtualHost *>
        ServerName bayen.bayen.loc
        DocumentRoot /home/tbayen/public_html/
        ScriptAlias /cgi-bin/ /home/tbayen/public_html/cgi-bin/
  </VirtualHost>

Alternativ kann man auch das Modul mod_vhost_alias zu Hilfe nehmen. Dieses ist interessant, wenn ich wirklich viele Namen und Webauftritte verwalten will. So kann z.B. jeder Benutzer einen eigenen Webauftritt unter seinem Benutzernamen haben, wenn man folgendes in die /etc/apache/httpd.conf einfügt:

  VirtualDocumentRoot /home/%1/public_html
  VirtualScriptAlias /home/%1/public_html/cgi-bin

(Im Beispiel ist "%1" verwendet worden. Dies entspricht dem ersten Teil des verwendeten DNS-Namens. Mit "%0" kann man den gesamten Namen als Verzeichnisnamen einfügen.)

Namensauflösung #

Zu beachten ist, daß diese Einstellungen hier nichts mit der Namensauflösung zu tun haben. Man muss also selbstverständlich den Nameserver auch noch entsprechend konfigurieren.

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 /etc/apache-ssl/httpd.conf. Dort sucht man den Befehl SSLCertificateFile und gibt den Dateinamen des Zertifikates an.

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

Kategorien
KategorieApache