Недавно я переместил веб-сайт WordPress с небольшим магазином от хостинг-провайдера на собственный сервер под управлением Ubuntu Server 12.04.2 LTS и Apache 2.2.22. Мне нужен SSL для магазина. Я установил пару простых хостов на новом IP-адресе для сервера, одну привязку к порту 80 определенного IP, а другую привязку к порту 443. Оба имеют ServerName www.example.com
и ServerAlias example.com
в конфиге vhost. у меня есть SSLStrictSNIVHostCheck off
.
Сайт работает очень медленно, но работает. В журналах ошибок я получаю следующее.
[Error] Hostname example.com provided via SNI and hostname www.example.com provided via HTTP are different
Я полагаю, что медлительность связана с приведенным выше сообщением. Есть идеи о том, почему это появляется и что я могу с этим сделать?
Посмотрите журнал доступа (а не журнал ошибок). С помощью времени и даты ошибки вы сможете идентифицировать проблемный запрос и узнать пользовательский агент. В моем случае это был бот:
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)"
Мой сервер отвечает HTTP 400: неверный запрос.
Если я не ошибаюсь, при согласовании TLS клиент отправляет имя хоста дважды: один раз ПЕРЕД установлением SSL-соединения в SNI (указание имени сервера) и один раз ПОСЛЕ фактического HTTP-запроса. Если имена серверов не совпадают, это будет указывать на неисправный клиент и не должно иметь ничего общего с тем, как настроен ваш сервер.
Возможно, они когда-нибудь исправят своего бота, а пока вы, вероятно, можете игнорировать это. Я сомневаюсь, что это может вызвать медленную работу хоста, если только запросы не поступают с очень высокой скоростью.
Может эта ошибка вызвана намеренно некоторыми клиентами для проверки уязвимостей вашего сервера. Я обнаружил, что запрос от researchscan367.eecs.umich.edu
вызвал ошибку на обслуживаемом мной сервере. В этом случае появление ошибки - это хорошо.
Мне было любопытно, какие виды атак возможны, и я задал этот вопрос на Security Stack Exchange: Какую атаку предотвращает код ошибки Apache2 AH02032?
В моем случае проблемой было создание нового виртуального хоста с подчеркиванием. У меня есть 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>
На первый взгляд кажется, что проблема клиента ... Какой браузер вызывает эту проблему?
В сообщении предполагается, что имя хоста, которое клиент отправляет во время установки ssl-соединения, не совпадает с именем хоста, которое клиент отправляет в запросе HTTPS после включения уровня SSL.
Проверьте свой файл / etc / hosts, чтобы узнать, назначаете ли вы доменное имя локальному (внутреннему) IP-адресу. Не забудьте перезапустить демон кеширования службы имен после изменения / etc / hosts service nscd restart