fragen stichworte

curl 7.21 ruft einen Host mit einem Hostheader für https nicht korrekt auf

Wir haben herausgefunden, dass das Aufrufen eines Hosts wie folgt mit curl 7.21 oder 7.24 zu einem Fehler in der Apache-Konfiguration führt (wir haben mehrere SSL-Vhosts!). Derselbe Befehl läuft glatt mit curl 7.34 und höher. Weiß jemand warum?

Befehl: curl https://192.168.0.1/version -H "Host: example.domain.com" -k

Dies sollte eine Version wie "1.2.1" zurückgeben. Mit neueren Locken (getestet 7.34 und 7.38/39) ist dies tatsächlich der Fall, es wird jedoch eine 400 mit Locken 7.21/7.24 zurückgegeben.

Beim Ausführen mit einer älteren Curl gibt der Apache Folgendes zurück:

[error] Hostname 192.168.0.1 provided via SNI and hostname example.domain.com provided via HTTP are different

Normalerweise dachte ich, dies könnte ein Problem sein, weil SNI-Unterstützung in curl fehlt, aber ich habe gelesen, dass SNI bereits in curl 7.18 hinzugefügt werden sollte.

antworten

Das beschriebene Verhalten ist korrekt. SNI basiert auf der URL (192.168.0.1), Host-HTTP-Header wird manuell von Ihnen gesetzt (example.domain.com).

Wenn Apache diese Anfrage bearbeitet, erhält es 192.168.0.1 in SNI und verwendet die Konfiguration für diesen vhost (wahrscheinlich Standard). Wenn die Nutzlast jedoch entschlüsselt wird, trifft sie auf einen anderen Host => ERROR.