Hi,

ich habe zwei Domains (wgdd.de und wgdd.org). Die Sub-Domain www.wgdd.de hat
einen CNAME-Eintrag (für Google Blogger) und soll hier nicht weiter
interessieren. Alle anderen Domains lösen auf meinen Server auf.

Dort ist der Apache unter Port 80 so eingestellt, dass er für bestimmte Sub-
Domains den Code 410 ausgibt (alte, nicht mehr existierende Seiten) und
ansonsten die URL auf die HTTPS-Adresse umleitet. Unverschlüsselt soll kein
Inhalt ausgeliefert werden. Das klappt gut. Es geht also alles über HTTPS. Für
die .de- und die .org-Domain habe ich daher mit letsencrypt/certbot SSL-
Wildcard-Zertifikate erstellt. Auch das funktionierte prima.

Die Sub-Domains www2.wgdd.de, www3.wgdd.de und www.wgdd.org haben jeweils eine
eigene Config (jeweils <VirtualHost *:443>) und natürlich als ServerName
jeweils die Domain gesetzt.

> ls -lA /etc/apache2/sites-enabled/
> 000-default.conf  www2.wgdd.de.conf  www3.wgdd.de.conf        
> www.wgdd.org.conf

Die Aufrufe im Browser funktionieren wie gewünscht.

Wenn ich jetzt im Browser aber `https://www4.wgdd.de` eingebe, greift der
Server auf die wgdd.org-Zertifikate zurück und meldet eine unsichere
Verbindung. Das ist das erste, was ich nicht so recht verstehe. Warum werden
alle HTTPS-Anfragen, die nicht auf die vorhandenen ServerName/ServerAlias-Werte
passen, auf den letzten geladenen VirtualHost (hier in www.wgdd.org.conf) unter
Port 443 weitergeleitet? Laut Doku müsste er doch in diesem Fall den ersten
nehmen...? Das zweite, was ich nicht so recht versteht: Warum verhält sich der
Apache überhaupt so? Wenn ich keinen Wildcard-Alias angebe, dann will ich doch
offensichtlich auch nicht, dass der Apache foo.wgdd.de handhabt.

Ich habe jetzt eine Config namens zzz.conf erstellt, die damit als letzte
geladen wird und für *jede* meiner beiden Domains den folgenden Eintrag
enthält:

> <IfModule mod_ssl.c>
> <VirtualHost *:443>
>
> ServerName default.wgdd.xx
> ServerAlias *.wgdd.xx
> ServerSignature Off
>
> SSLEngine On
> SSLOptions +StrictRequire
> SSLCertificateFile      /etc/letsencrypt/live/wgdd.xx/fullchain.pem
> SSLCertificateKeyFile   /etc/letsencrypt/live/wgdd.xx/privkey.pem
> SSLCertificateChainFile /etc/letsencrypt/live/wgdd.xx/chain.pem
> SSLCACertificateFile    /etc/ssl/certs/ca-certificates.crt
>
> Redirect 404 /
>
> </VirtualHost>
> </IfModule>

Und ich muss leider zwei Einträge machen, damit die SSL-Zertifikate passen und
der Browser nicht weitere Meldungen auswirft.

Das gibt zumindest einen 404-Code und fängt alle nicht existenten Adressen ab.
Aber geht das vielleicht auch eleganter? Irgendwie fühlt sich das nicht
"richtig" an.

Grüße, Daniel


Antwort per Email an