Frage Konflikt zwischen SNI und HTTP bereitgestellten Domänen


Ich habe kürzlich eine WordPress-Website mit einem kleinen Laden von einem Hosting-Anbieter auf einen eigenen Server mit Ubuntu Server 12.04.2 LTS und Apache 2.2.22 verschoben. Ich benötige SSL für den Laden. Ich habe ein paar einfache vhosts auf einer neuen IP für den Server eingerichtet, eine Bindung an Port 80 der spezifischen IP und die andere Bindung an Port 443. Beide haben ServerName www.example.com und ServerAlias example.com in der vhost config. ich habe SSLStrictSNIVHostCheck off.

Die Seite läuft sehr langsam, funktioniert aber. Ich erhalte Folgendes in meinen Fehlerprotokollen.

[Error] Hostname example.com provided via SNI and hostname www.example.com provided via HTTP are different

Ich erwarte, dass die Langsamkeit mit der obigen Nachricht zusammenhängt. Irgendwelche Ideen, warum das auftaucht und was ich dagegen tun kann?


18
2017-12-17 15:32


Ursprung




Antworten:


Sehen Sie sich Ihr Zugriffsprotokoll an (nicht das Fehlerprotokoll). Mit der Uhrzeit und dem Datum des Fehlers sollten Sie in der Lage sein, die beanstandende Anfrage zu identifizieren und den Benutzer-Agent zu finden. In meinem Fall war es ein Bot:

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)"

Mein Server antwortet mit HTTP 400: Ungültige Anfrage.

Sofern ich mich nicht täusche, sendet der Client bei TLS-Verhandlungen den Hostnamen zweimal: einmal VOR der SSL-Verbindung im SNI (Server Name Indication) und einmal AFTER in der eigentlichen HTTP-Anfrage. Wenn die Servernamen nicht übereinstimmen, deutet dies auf einen beschädigten Client hin und sollte nichts mit der Konfiguration Ihres Servers zu tun haben.

Vielleicht werden sie ihren Bot eines Tages reparieren, in der Zwischenzeit können Sie es wahrscheinlich ignorieren. Ich bezweifle, dass dies auf dem Host Langsamkeit verursachen kann, es sei denn, die Anfragen kommen mit einer sehr hohen Rate.


21
2018-01-27 23:14





Vielleicht wird dieser Fehler hervorgerufen absichtlich von einigen Clients, um Sicherheitslücken auf Ihrem Server zu testen. Ich habe festgestellt, dass eine Anfrage von researchscan367.eecs.umich.edu hat den Fehler auf einem von mir gepflegten Server ausgelöst. In diesem Fall ist es gut, dass der Fehler auftritt.

Ich war neugierig, welche Art von Angriffen möglich sind, und ich habe diese Frage zu Security Stack Exchange gestellt: Welche Art von Angriff wird durch den Fehlercode AH02032 von Apache2 verhindert?


8
2017-08-16 12:58





Klingt wie ein Client-Problem auf den ersten Blick ... Welcher Browser verursacht dieses Problem?

Die Nachricht würde vorschlagen, dass der Hostname, den der Client während der SSL-Verbindung sendet, nicht derselbe ist, den der Client in der HTTPS-Anforderung sendet, sobald die SSL-Schicht aktiv ist.


1
2017-12-17 16:58



Ich weiß nicht, was das verursacht. Der Fehler meldet keine Client-Informationen. Ich weiß nur, dass ich das regelmäßig sehe. Ich hatte gehofft, dass die ServerAlias ​​ausreichen, um es glücklich zu machen, da der Server theoretisch weiß, dass www.domain.com und domain.com gleichwertig sind. - flickerfly
@flickerfly Ja, das ist ein fehlerhafter Client, und Sie können nicht viel tun, wenn Sie ihn nicht identifizieren können. - Michael Hampton♦
Okay, deaktiviere einfach SNI, indem ich die Direktive NameBasedVirtualHost für Port 443 entferne. Ich schätze, ich brauche sie zu diesem Zeitpunkt nicht. Ich denke, das sollte funktionieren. - flickerfly


Überprüfen Sie in Ihrer Datei / etc / hosts, ob Sie den Domänennamen einer lokalen (internen) IP-Adresse zuweisen. Vergessen Sie nicht, den Name-Service-Cache-Daemon neu zu starten, nachdem Sie / etc / hosts geändert haben Dienst nscd Neustart


0
2017-10-25 02:39





In meinem Fall war das Erstellen eines neuen virtuellen Hosts mit einem Unterstrich das Problem. Ich habe ein Wildcard-SSL-Zertifikat.

Hat nicht funktioniert:

<VirtualHost *:443>
        SSLEngine on
        ServerName sub_domain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>

Obwohl Apache erfolgreich neu gestartet wurde, habe ich HTTP 400-Fehler bekommen. Im Fehlerprotokoll:

[Wed Sep 05 11:28:00.349960 2018] [ssl:error] [pid 19906:tid 140392626808576] AH02031: Hostname sub_domain.example.com provided via SNI, but no hostname provided in HTTP request

Aber das Entfernen des Unterstrichs hat funktioniert:

<VirtualHost *:443>
        SSLEngine on
        ServerName subdomain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>

0
2017-09-05 09:35



Willkommen bei ServerFault. Das Einfügen von Unterstrichen in Hostnamen ist gegen die RFCs gerichtet und wird auf verschiedene Arten unterbrochen. stackoverflow.com/questions/2180465/... - chicks
Genau! Deshalb ist es jetzt auch hier als Referenz. - MS Berends