Problem:
Wie stellt man für einzelne VirtualHosts (in meinem Fall: Eine Moodle-Installation) die SSL-Verschlüsselung ein, ohne dass andere VirtualHosts unter der gleichen IP (in meinem Fall: Eine Joomla-Installation) betroffen sind?
Vorgehen:
- Wie bei heise-online hervorragend beschrieben ein SSL-Zertifikat erstellen (kostenlos, recht einfach und problemlos bei StartSSL). Der Dateiname kann dabei die URL sein, muss aber nicht. Die 3 Dateien (Zertifikat, Schlüssel und Intermediate-Zertifikat)
- Das SSL-Modul von Apache laden und die Konfiguration neu einlesen
sudo a2enmod ssl
sudo service apache2 force-reload
- Wenn nicht schon vorhanden, neue VirtualHosts anlegen:
- Die Datei /etc/apache2/sites-available/000-default.conf zweimal kopieren nach /etc/apache2/sites-available/www.domain1.de.conf und ...../www.domain2.de.conf
- (Mindestens) folgende Angaben eintragen (in meinem Fall ist Domain1 die moodle-Installation und Domain2 die joomla-Installation)
Achtung: [ und ] bitte durch < und > ersetzen! Lässt sich im blöden Blogger-Editor nicht richtig formatieren!!!
[VirtualHost *:80´]
ServerName www.servername1.de
DocumentRoot /var/www/moodle/
[Directory /var/www/moodle]
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
[/Directory]
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
[/VirtualHost]
[VirtualHost *:443]
ServerName www.servername1.de
DocumentRoot /var/www/moodle/
[Directory /var/www/moodle]
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
[/Directory]
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/moodle.crt
SSLCertificateKeyFile /etc/ssl/private/moodle.key
SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem
[/VirtualHost]
- Das Entsprechende auch mit der zweiten Seite machen, allerdings nur mit dem ersten VirtualHost auf Port 80, wenn die zweite Seite nicht auch verschlüsselt werden soll.
- Die neuen Seiten in Apache aktivieren:
sudo a2ensite www.domain1.de.conf
sudo a2ensite www.domain2.de.conf
sudo service apache2 force-reload
- Ab sofort sollte sich die Webseite auch über https://www.domain1.de aufrufen lassen. Will man das zum Standardverhalten machen (Weiterleitung von http auf https), findet sich hier eine ausreichende Anleitung dafür.
- Anmerkung für Moodle: In Moodle kann man einstellen (Webseiten-Administration-http-Sicherheit), ob man SSL nur für den Login verwenden will oder für die gesamte Seite, wobei dann der Moodle-eigene Cache nicht funktioniert. Die Performance-Auswirkungen habe ich noch nicht getestet.