Назад | Перейти на главную страницу

Имя хоста предоставляется через SNI, но имя хоста не указано в HTTP-запросе

Я получил эту ошибку в журнале apache:

[Mon Oct 28 16:11:33.074606 2019] [ssl:error] [pid 30553] AH02031: Hostname mywebsite.com provided via SNI, but no hostname provided in HTTP request

Я не мог найти никакой информации об этом. Что это значит?

Веб-сайт не отвечал и был на 100% ЦП в течение часа, мне пришлось остановить его из консоли, когда я смотрю журнал ошибок, я видел только указанную выше ошибку, которая была в то время, когда ЦП стал 100 %

Я подозреваю, что это может быть какая-то форма хакерской атаки, поскольку это сообщение похоже на Конфликт между доменами, предоставленными SNI и HTTP

Я подозреваю, что это может быть какая-то форма хакерской атаки, поскольку это сообщение похоже на Конфликт между доменами, предоставленными SNI и HTTP.

Теоретически это может быть хакер, но он также может быть совершенно невиновным. Это отличается от проблемы в вопросе, который вы тоже связали, когда кто-то намеренно использует другое имя в ClientHello и Host заголовок.

В этом случае просто нет Host заголовок. Вместо злоумышленника я скорее подозреваю, что кто-то пробует HTTP, не прочитав должным образом спецификацию, или пытается просто запросы HTTP / 1.0 (которые не требуют Host заголовок во всех случаях в отличие от HTTP / 1.1) по-прежнему работает.

Например, следующий простой код Perl создаст такую ​​запись журнала, если www.example.com будет установка с несколькими доменами, обслуживаемая Apache:

use IO::Socket::SSL;
my $cl = IO::Socket::SSL->new('www.example.com:443');
print $cl "GET / HTTP/1.0\r\n\r\n";

И с небольшой доработкой (с ожидаемой Host заголовок) сообщения не было бы:

print $cl "GET / HTTP/1.0\r\nHost: www.example.com\r\n\r\n";