curl 7.21 неправильно вызывает хост с заголовком хоста по https

Мы обнаружили, что вызов хоста, подобный следующему с использованием curl 7.21 или 7.24, приводит к ошибке в конфигурации apache (у нас есть несколько SSL Vhosts!). Принимая во внимание, что та же команда работает гладко с curl 7.34 и выше. Кто-нибудь знает почему?

Команда: curl https://192.168.0.1/version -H "Host: example.domain.com" -k

Это должно вернуть версию как "1.2.1". Это действительно так с более новыми локонами (протестировано 7.34 и 7.38/39), но возвращает 400 с локонами 7.21/7.24.

При выполнении со старым curl, Apache возвращает это:

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

Обычно я думал, что это может быть проблемой из-за отсутствия поддержки SNI в curl, но я читал, что SNI уже должен был быть добавлен в curl 7.18.

1 ответ

Описанное поведение правильно. SNI основан на URL (192.168.0.1) HTTP-заголовок хоста устанавливается вами вручную (example.domain.com).

Когда Apache обрабатывает этот запрос, он получает 192.168.0.1 в SNI и использует конфигурацию для этого vhost (вероятно, по умолчанию). Однако, когда полезные данные дешифрованы, они сталкиваются с другим хостом => ОШИБКА.

Другие вопросы по тегам