This page (revision-11) was last changed on 23-Feb-2009 23:01 by JensKapitza 

This page was created on 03-Oct-2006 21:29 by UnknownAuthor

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
11 23-Feb-2009 23:01 2 KB JensKapitza to previous muss noch überarbeitet werden
10 31-Jan-2008 16:24 3 KB ThomasBayen to previous | to last Virtual Hosts auf eigene Seite
9 25-Jan-2008 12:23 5 KB ThomasBayen to previous | to last Tagging
8 16-Jan-2008 17:26 5 KB PeterHormanns to previous | to last Tagging
7 27-Oct-2007 19:07 5 KB ThomasBayen to previous | to last Apache 2.2 mit SSL installiert
6 16-Dec-2006 23:41 4 KB PeterHormanns to previous | to last KategorieApache
5 25-Nov-2006 16:35 4 KB Jens Kapitza to previous | to last
4 20-Oct-2006 22:48 4 KB PeterHormanns to previous | to last Formatiert für JSPWiki, Link Seite OpenSSL
3 20-Oct-2006 22:47 4 KB PeterHormanns to previous | to last Formatiert für JSPWiki, Link Seite OpenSSL
2 20-Oct-2006 22:44 4 KB PeterHormanns to previous | to last Formatiert für JSPWiki, Link Seite OpenSSL
1 03-Oct-2006 21:29 4 KB UnknownAuthor to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

!!! 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
suchtsuch man den Befehl <<__~SSLCertificateFile____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