
Ich habe mehrere virtuelle Hosts auf meinem Server, sagen wir, ich diene
www.example.com
sub.example.com
www.example.nl
In meiner DNS-Konfiguration verweist alles auf denselben Server.
In der Apache2-Konfiguration gibt es eine Standardkonfigurationsdatei für http und eine für https sowie zusätzliche virtuelle Hosts für die zusätzlichen Sites. Ich möchte, dass alle Beinaheübereinstimmungen umgeleitet werden www.example.com
. Alle spezifischen Sites haben ein Zertifikat.
Meine Dateien sehen also so aus
000-default.conf (redirects to https://www.example.com)
default-ssl.conf (serves https://www.example.com)
sub.example.com.conf (redirects to https://sub.example.com)
sub.example.com-ssl.conf (serves https://sub.example.com)
www.example.nl.conf (redirects to https://www.example.nl)
www.example.nl-ssl.conf (serves https://www.example.nl)
Das Problem besteht nun darin, dass jede andere Anfrage (z. B. für be-creative.example.nl
) standardmäßig auf die erste geladene Konfiguration zurückgreift. Dies funktioniert für http ( 000-default
wird abgeglichen und umgeleitet), aber nicht für https, da ich kein gültiges Zertifikat für geladen habe be-creative.example.nl
. Daher kann ich weder umleiten noch eine gültige Seite bereitstellen.
Wenn ich deaktiviere default-ssl.conf
, wird die Anforderung abgeglichen sub.example.com-ssl.conf
und dennoch das falsche Zertifikat bereitgestellt.
Frage: Wie kann ich diese Anfragen, für die ich kein Zertifikat habe, elegant bearbeiten? Wie kann ich auf http umleiten, ohne zuerst ein gültiges passendes Zertifikat zu haben?
Antwort1
Ich löse das Problem auf meinem eigenen Server (CentOS, Apache 2.4), indem ich eine allgemeine Seite (invalidssl.example.com) mit einem gültigen SSL-Zertifikat (ich habe ein kostenloses von Let's Encrypt erhalten) habe und dieses in der Standardkonfiguration einstelle. Auf diese Weise wird bei allen HTTPS-Anfragen an eine Nicht-SSL-Domäne stattdessen diese allgemeine Seite mit einer netten Fehlermeldung angezeigt.
Zur Beantwortung Ihrer Frage:
Die einzige Möglichkeit, einem Besucher, der eine Seite über https anfordert, Inhalte bereitzustellen (sei es eine Seite oder eine Weiterleitungsantwort), ohne eine Browserwarnung auszulösen, besteht darin, mit einem gültigen SSL-Zertifikat für die angeforderte Domain zu antworten. Ich persönlich sehe keinen Grund, warum Sie dieses Problem haben sollten, da heutzutage kostenlose SSL-Zertifikate leicht verfügbar sind (sehen Sie sich das an:Lass uns verschlüsseln!).