Мы обнаружили, что вызов хоста, подобный следующему, с использованием 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 с curl 7.21 / 7.24.
При выполнении со старым завитком 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.
Описанное поведение правильное. SNI основан на URL (192.168.0.1
), HTTP-заголовок хоста устанавливается вами вручную (example.domain.com
).
Когда Apache обрабатывает этот запрос, он получает 192.168.0.1
в SNI и использует конфигурацию для этого виртуального хоста (вероятно, по умолчанию). Однако, когда полезная нагрузка расшифровывается, она встречает другой хост => ОШИБКА.