Apache ISP Konfiguration mit SSL

Zielsetzung ist Apache Webserver mit SSL Support für beliebig viele VirtualHosts mit unterschiedlichen Verzeichnissen. Es gibt eine ‚Fallback-Domain‘ auf der alle Anfragen landen für die es keine Webserver Konfiguration mehr gibt.

Wichtig ist zuerst festzulegen für welche VirtualHosts nach dem FQDN (Hostname oder Domainnamen) unterschieden werden soll. Dazu verwenden wir *. D.h. für alle Einträge können über ServerName unterschiedliche Webserver angesprochen werden. Unter Webserver kann man also auch VirtualHost verstehen.

NameVirtualHost *

Zu setzen. D.h. für alle Einträge im Format:

<VirtualHost *>
    ServerName foo1.example.com
    DocumentRoot /foo1...
    ....
    AssignUserId ....
</VirtualHost>

<VirtualHost *>
    ServerName foo2.example.com
    DocumentRoot /foo2...
    ....
    AssignUserId ....
</VirtualHost>

Um nun z. B. SSL verwenden zu können, wird eine IP-Adresse benötigt. Denn es kann nur ein SSL-Webserver auf einer IP-Adresse laufen. Es darf auch nur ein ServerName und kein ServerAlias angegeben werden, wenn es sich um ein normales SSL Cert handelt.

<VirtualHost 192.168.1.2:443 >

    SSLEngine On
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
    SSLCertificateFile /.../conf/cert.pem

    ServerName foo3.example.com
    DocumentRoot /foo-ssl...
    ....
    AssignUserId ....
</VirtualHost>

Dadurch, dass man für SSL eine IP-Adresse benötigt, kann man auch ganz einfach direkt über diese IP-Adresse auf den Webserver ohne SSL zugreifen. z. B. so: http://192.168.1.2 aber natürlich auch http://foo3.example.com. Natürlich muss im DNS ein eintrage zum Mapping von foo3.example.com auf 192.168.1.2 vorhanden sein. Hier könnte man natürlich auch Reverse Mapping eintragen.

<VirtualHost 192.168.1.2:80 >
    ServerName foo3.example.com
    DocumentRoot /foo-ssl...
    ....
    AssignUserId ....
</VirtualHost>

Weitere Informationen: http://httpd.apache.org/docs/2.0/de/vhosts/examples.html