Apache2 mit SSL versehen und den Dokumenten-Root verschieben

SSL (https) Einrichten

SSL-Ordner erstellen:

mkdir -p /etc/apache2/ssl

Keys erzeugen:

openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem

Link setzen:

ln -sf /etc/apache2/ssl/apache.pem /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < /etc/apache2/ssl/apache.pem`.0

Rechte setzen:

chmod 600 /etc/apache2/ssl/apache.pem

Apache neustarten:

service apache2 reload 

SSL-Module aktivieren

sudo a2enmod ssl 

Apache mit force-reload neustarten

sudo service apache2 force-reload

Um die SSL-Seite aufrufen zu können, muss diese noch konfiguriert werden. Dazu öffnet man die “/etc/apache2/httpd.conf” und fügt folgendes ein:

   SSLEngine    
   SSLCertificateFile /etc/apache2/ssl/apache.pem
   DocumentRoot /pfad/zum/dokumenten_root

Im nächsten Schritt muss noch die neue VirtualHost-Konfiguration aktiviert werden…

sudo a2ensite ssl 

...und der Webserver wieder neugestartet werden:

service apache2 force-reload 

Danach ist der Webserver unter https erreichbar.

Dokumenten-Root verschieben

Normalerweise ist der Dokumenten-Root des Webservers unter /var/www erreichbar. Um diesen zu verschieben, brauchen wir nur einen Link in den alten Dokumenten-Root, um zum Neuen, zu verlinken:

ln -s htdocs /pfad/zum/neuen/dokumenten_root

Als nächstes wird noch der Virtualhost angepasst. Dazu öffnet man die “/etc/apache2/sites-enabled/000-default”. Diese kann man bearbeiten, muss man aber nicht. Es ist besser den Inhalt in die /etc/apache2/httpd.conf" zu kopieren und dort anzupassen. Um den Dokumenten-Root zu verschieben wird einfach folgende Zeile angepasst und durch den symbolischen Link ersetzt:

# alt
DocumentRoot /var/www

# neu
DocumentRoot /var/www/htdocs

Um die Konfiguration abzuschließen, muss nur noch der Webserver neugestartet werden:

service apache2 force-reload 

Fehlermeldungen und Probleme

Es funktioniert kein mod_rewrite, welches sich durch 404 und 500-Fehler bemerkbar machen oder im Log (/var/log/apache2/error.log) folgendes auftaucht: “.htaccess: order not allowed here”? Lösung: den virtuellen Host auf Port 80 folgendermaßen anpassen:

    Options Indexes FollowSymLinks MultiViews
    AllowOverride Limit FileInfo
    Order allow,deny
    allow from all

Wichtig ist hier die Einstellung von AllowOverride. Man kann alles freischalten mit All oder das Limit auf FileInfo setzen. AllowOverride FileInfo funktioniert nicht! Es muss daher immer mit Limit spezifiziert werden!