Conflito entre domínios fornecidos por SNI e HTTP

Conflito entre domínios fornecidos por SNI e HTTP

Recentemente, mudei um site WordPress com uma pequena loja de um provedor de hospedagem para um servidor próprio executando Ubuntu Server 12.04.2 LTS e Apache 2.2.22. Eu preciso de SSL para a loja. Eu configurei alguns vhosts simples em um novo IP para o servidor, um vinculado à porta 80 do IP específico e o outro vinculado à porta 443. Ambos possuem ServerName www.example.come ServerAlias example.comna configuração do vhost. Eu tenho SSLStrictSNIVHostCheck off.

O site está muito lento, mas está funcionando. Estou recebendo o seguinte em meus logs de erros.

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

Espero que a lentidão esteja relacionada à mensagem acima. Alguma idéia de por que isso está aparecendo e o que posso fazer a respeito?

Responder1

Veja seu log de acesso (não o log de erros). Com a hora e a data do erro, você poderá identificar a solicitação incorreta e descobrir o agente do usuário. No meu caso, era um bot:

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

Meu servidor responde com HTTP 400: Bad Request.

A menos que eu esteja enganado, nas negociações TLS, o cliente envia o nome do host duas vezes: uma vez ANTES da conexão SSL ser estabelecida no SNI (Server Name Indication) e uma vez DEPOIS na solicitação HTTP real. Se os nomes dos servidores não corresponderem, isso indicaria um cliente quebrado e não deveria ter nada a ver com a configuração do seu servidor.

Talvez eles consertem o bot algum dia, enquanto isso você provavelmente pode ignorá-lo. Duvido que isso possa causar lentidão no host, a menos que as solicitações cheguem em uma taxa muito alta.

Responder2

Talvez esse erro seja evocadointencionalmentepor alguns clientes para testar vulnerabilidades do seu servidor. Descobri que uma solicitação researchscan367.eecs.umich.edudesencadeou o erro em um servidor que mantenho. Neste caso é bom que o erro ocorra.

Fiquei curioso para saber que tipo de ataques são possíveis e fiz esta pergunta no Security Stack Exchange:Que tipo de ataque é evitado pelo código de erro AH02032 do Apache2?

Responder3

No meu caso, a criação de um novo host virtual com sublinhado foi o problema. Eu tenho um certificado SSL curinga.

Não funcionou:

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

Embora o Apache tenha reiniciado com sucesso, recebi erros HTTP 400. No log de erros:

[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

Mas remover o sublinhado funcionou:

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

Responder4

Verifique seu arquivo /etc/hosts para ver se você está atribuindo o nome de domínio a um endereço IP local (interno). Não se esqueça de reiniciar o daemon de cache do serviço de nomes após alterar /etc/hosts service nscd restart

informação relacionada