Конфлікт між наданими доменами SNI та HTTP


22

Нещодавно я перемістив веб-сайт WordPress з невеликим магазином від провайдера хостингу на сервер власного запуску Ubuntu Server 12.04.2 LTS та Apache 2.2.22. Мені потрібен SSL для магазину. Я встановив пару простих vhosts на новому IP для сервера, один прив’язує до порту 80 конкретного IP, а інший прив’язує до порту 443. Обидва мають ServerName www.example.comі ServerAlias example.comв vhost config. Я маю SSLStrictSNIVHostCheck off.

Сайт працює дуже повільно, але працює. Я отримую наступне у своїх журналах помилок.

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

Я сподіваюся, що повільність пов'язана з вищезгаданим повідомленням. Будь-які ідеї, чому це з’являється, і що я можу з цим зробити?

Відповіді:


24

Подивіться на свій журнал доступу (не журнал помилок). З часом та датою помилки ви маєте змогу визначити запит, що порушує право, та дізнатись агента користувача. У моєму випадку це був бот:

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

Мій сервер відповідає HTTP 400: поганий запит.

Якщо я не помиляюся, під час переговорів про TLS клієнт надсилає ім'я хоста двічі: один раз перед тим, як встановлено з'єднання SSL в SNI (Вказівка ​​імені сервера) та один раз ПІСЛЯ у фактичному запиті HTTP. Якщо невідповідність імен серверів, це вказуватиме на непрацездатний клієнт і не має нічого спільного з налаштуванням вашого сервера.

Можливо, вони виправлять свого бота колись, а тим часом ви, мабуть, можете його проігнорувати. Сумніваюсь, це може спричинити повільність у хоста, якщо тільки запити не надто високі.


11

Можливо , деякі клієнти навмисно викликають цю помилку для перевірки вразливості вашого сервера. Я виявив, що запит від researchscan367.eecs.umich.eduініціювала помилку на сервері, який я підтримую. У цьому випадку добре, що помилка виникає.

Мені було цікаво, які можливі атаки, і я задав це питання на Exchange Stack Exchange: Яку атаку заважає код помилки Apache2 AH02032?


1

На перший погляд здається, що проблема клієнта ... Який браузер викликає цю проблему?

Повідомлення передбачає ім'я хоста, яке клієнт відправляє під час з'єднання ssl, не те саме, що клієнт надсилає у запиті HTTPS, коли рівень SSL піднятий.


Я не знаю, що це спричиняє. Про помилку не повідомляється інформація про клієнта. Я просто знаю, що регулярно бачу це. Я сподівався, що ServerAlias ​​був достатнім, щоб зробити його щасливим, оскільки теоретично сервер знає, що www.domain.com і domain.com є рівнозначними.
мерехтіння

@flickerfly Так, це клієнт-баггі, і ви не можете багато чого зробити, якщо не зможете його визначити.
Майкл Хемптон

2
Гаразд, просто відключив SNI, видаливши директиву NameBasedVirtualHost для порту 443. Напевно, мені це не потрібно в цей момент. Я думаю, що це має спрацювати.
мерехтіння

1

У моєму випадку створення нового віртуального хосту з підкресленням було проблемою. У мене є сертифікат підстановки SSL.

Не вийшло:

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

Хоча Apache успішно перезапустився, у мене виникли помилки HTTP 400. У журналі помилок:

[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

Але усунення підкреслення спрацювало:

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

1
Ласкаво просимо до ServerFault. Введення підкреслень у імена хостів суперечить RFC та порушиться різними способами. stackoverflow.com/questions/2180465/…
пташенята

1
Саме так! Тож тому це тепер і тут як орієнтир.
MS Berends

0

Перевірте / etc / hosts файл, щоб побачити, чи призначаєте ви доменне ім’я локальній (внутрішній) IP-адресі. Не забудьте перезапустити демон кешу службового імені після зміни / etc / hosts служби nscd restart

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.