Hallo Vinzenz,
<zitat>
Namensbasierte virtuelle Hosts können aufgrund der Natur des SSL-Protokolls
nicht mit SSL-gesicherten Servern verwendet werden.
</zitat>
Nun ja, das ist nicht ganz korrekt, denn gesichert werden können sie (ich habe es bei meinem aktuellen Server ja auch mit https://ssl.example.net/ geschafft). Allerdings verstehe ich jetzt wieder, welches Problem hier auftritt: Der Hostname ist nicht bekannt, wenn eine mit SSL verschlüsselte Seite aufgerufen wird.
Ich habe nun folgende Einträge in meine Datei /etc/apache2/sites-available/default hinzugefügt:
NameVirtualHost *:443
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName localhost:443
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
deny from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
SSLEngine On
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
SSLCertificateChainFile /etc/ssl/certs/cacert.crt
ServerSignature Off
</VirtualHost>
So bekommen zwar alle Domains bei Aufruf mit https:// eine "Forbidden"-Seite, und das Zertifikat ist eventuell nicht für die Domains ausgelegt (wie jetzt beispielsweise auf https://marcreichelt.de/) - aber es ist in Ordnung. Nun kann ich in den anderen VirtualHosts einzeln SSL freischalten - was bereits bei einem Host funktioniert.
Die Konfiguration dafür sieht so aus:
# Host: ssl.example.org
<VirtualHost *:443>
ServerName ssl.example.org:443
ServerAdmin admin@example.org
DocumentRoot "/var/www/example"
<Directory "/var/www/example">
Options -Indexes
AllowOverride All
Order allow,deny
Allow from All
</Directory>
SSLEngine On
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
SSLCertificateChainFile /etc/ssl/certs/cacert.crt
</VirtualHost>
Entscheidend ist dabei die Portangabe bei "ServerName ssl.example.org:443".
Um diese Erkenntnis zu erreichen war das Dokument VhostsApache sehr hilfreich (vor allem unten die Beispielkonfigurationen) - möge es für die Nachwelt auch hilfreich sein. :-)
Vielen Dank auch an dedlfx, der mich auf "_default_" gebracht hat, und an Vinzenz, der mich an das "chicken and egg"-Problem von SSL erinnert hat.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Linux is like a wigwam - no windows, no gates and an Apache inside!
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)