Apache2 mit SSL versehen und den Dokumenten-Root verschieben
Normalerweise ist der Dokumenten-Root des Webservers unter /var/www erreichbar. Um diesen zu verschieben, wird der Link zum alten Dokumenten-Root gesetzt.
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!