2013-09-28 16 views
10

Ich habe einen Debian-Server, auf dem eine Reihe von Client-Sites läuft. Die meisten davon führen kein SSL aus, daher ist der Zugriff über HTTP in Ordnung.Mehrere Sites pro Apache-Server mit SSL zeigt falsche Seite mit HTTPS

Ich habe einen Kunden mit einem SSL-Zertifikat und den Zugriff auf ihre Website über HTTPS ist auch in Ordnung.

Das Problem tritt auf, wenn Sie versuchen, auf eine der anderen Sites mit HTTPS zuzugreifen, die Sie an die andere Site weitergeleitet bekommen, die über das SSL-Zertifikat verfügt.

Zum Beispiel kann sagen, dass wir die folgenden Websites auf dem Server:

alpha.net 
bravo.net 
charlie.net (SSL) 
delta.net 

So wie Sie sehen können, charlie ist das einzige mit SSL, und unabhängig davon, ob Sie zu http charlie.net oder https charlie.net, es funktioniert gut.

http zu allen anderen Websites ist in Ordnung, aber wenn Sie zu https alpha.net gehen, wird es zunächst mit einem ungültigen Zertifikat Fehler kommen und lassen Sie fortfahren, während es alpha.net in der Adressleiste hat , es zeigt tatsächlich die charlie.net-Site im Browser.

Ich habe SNI recherchiert und wie wenn andere Seiten SSL haben Ich muss sie alle auf bestimmte IP-Adressen setzen (etwas anderes muss ich versuchen zu erarbeiten, wie zu tun, da ich keine Ahnung habe), aber ich bin nicht sicher, warum das passiert oder wie ich es auflöse.

Hat jemand anderes dies schon einmal gesehen und wie sind Sie damit umgegangen?

Vielen Dank,

Rob

+0

Ich habe das noch weiter recherchiert und ich habe herausgefunden, dass es weil die einzige Apache Site Konfigurationsdatei einschließlich 443 charlie.net ist. Da dies die einzige ist, die es enthält, auch wenn Sie versuchen, zu https und einer der anderen Domains zu gehen, gehen Sie zu charlie.net, weil es das einzige mit https ist. Das macht also durchaus Sinn.Was ich jetzt nicht weiß, ist, 443 einzurichten und ihm einen https-Befehl zu geben, um zu http umzuleiten, weil es kein Zertifikat gibt. Wenn jemand weiß, wie das geht, würde ich das schätzen. – Rob

+1

Joon bemerkte das gleiche Problem auf Webmasters SE: ["https: //" bezieht sich auf zufällige Website, "http: //" ist kaputt, aber "http: // www" funktioniert] (http: //webmasters.stackexchange. com/q/55685/17633) – unor

Antwort

1

Wenn Sie mehr IP-Adressen auf Ihrem Server haben, eine einzigartige eine für die SSL-Website verwendet, werden alle Nicht-SSL-Sites teilen eine andere IP.

Da es SSL egal ist, welche Domäne Sie besuchen, ist es nur wichtig, ob die aktuelle Domäne aus der Liste der Domänen (Common Name), die sie von der IP-Adresse erhält, genehmigt wird.

2

Dies hat nichts mit SNI zu tun, da Sie derzeit nur einen HTTPS-Server haben. Wie Sie in Ihrem Kommentar erklärt haben, passiert die Domain alpha.net in der IP Ihres Servers. Ihr Apache-Server ist so eingerichtet, dass er auf Port 443 nach dieser IP-Adresse fragt und den Inhalt von charlie.net für diese Anfragen bereitstellt. (Und der Zertifikatsfehler bedeutet, dass der Browser die Diskrepanz zwischen dem angeblichen Domainnamen des Zertifikats und dem für die Anfrage verwendeten Domainnamen bemerkt hat.)

Umleiten von HTTPS zu HTTP ist wahrscheinlich mehr Ärger, als es wert ist, da Sie gültig sein müssten Zertifikate für jede Domäne, damit Sie Ihren Benutzern keine weitere Sicherheitswarnung geben. Dies würde zur Folge hat virtuelle Hosts für alpha.net:443 zu schaffen und so weiter, auf einem SNI fähigen Server (dh spätere Versionen von Apache 2.2+ mit OpenSSL), und dem Hinzufügen einer Umleitung wie folgt:

RewriteEngine On 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} 

wohl Der einfachste Weg für Ihr Problem ist eine andere IP für charlie.net zu verwenden. Mit diesem Setup wäre alpha.net (und so weiter) nicht in der Lage, den Inhalt einer anderen Site anzuzeigen.