Conflicto entre dominios proporcionados por SNI y HTTP

Conflicto entre dominios proporcionados por SNI y HTTP

Recientemente moví un sitio web de WordPress con una pequeña tienda de un proveedor de alojamiento a un servidor propio que ejecuta Ubuntu Server 12.04.2 LTS y Apache 2.2.22. Necesito SSL para la tienda. Configuré un par de vhosts simples en una nueva IP para el servidor, uno vinculado al puerto 80 de la IP específica y el otro vinculado al puerto 443. Ambos tienen ServerName www.example.comy ServerAlias example.comen la configuración de vhost. Tengo SSLStrictSNIVHostCheck off.

El sitio funciona muy lento, pero está funcionando. Recibo lo siguiente en mis registros de errores.

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

Espero que la lentitud esté relacionada con el mensaje anterior. ¿Alguna idea sobre por qué aparece esto y qué puedo hacer al respecto?

Respuesta1

Mire su registro de acceso (no el registro de errores). Con la hora y fecha del error, debería poder identificar la solicitud infractora y descubrir el agente de usuario. En mi caso fue un bot:

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

Mi servidor responde con HTTP 400: Solicitud incorrecta.

A menos que me equivoque, en las negociaciones TLS, el cliente envía el nombre de host dos veces: una vez ANTES de que se establezca la conexión SSL en el SNI (Indicación de nombre de servidor) y otra DESPUÉS en la solicitud HTTP real. Si los nombres del servidor no coinciden, esto indicaría un cliente roto y no debería tener nada que ver con la configuración de su servidor.

Quizás algún día arreglen su bot, mientras tanto probablemente puedas ignorarlo. Dudo que esto pueda causar lentitud en el host, a menos que las solicitudes lleguen a un ritmo muy alto.

Respuesta2

Quizás este error sea evocado.intencionalmentepor algunos clientes para probar las vulnerabilidades de su servidor. Descubrí que una solicitud researchscan367.eecs.umich.edudesencadenó el error en un servidor que mantengo. En este caso es bueno® que se produzca el error.

Tenía curiosidad sobre qué tipo de ataques son posibles e hice esta pregunta en Security Stack Exchange:¿Qué tipo de ataque previene el código de error AH02032 de Apache2?

Respuesta3

En mi caso, el problema fue la creación de un nuevo host virtual con un guión bajo. Tengo un certificado SSL comodín.

No funcionó:

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

Aunque Apache se reinició exitosamente, obtuve errores HTTP 400. En el registro de errores:

[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

Pero eliminar el guión bajo funcionó:

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

Respuesta4

Verifique su archivo /etc/hosts para ver si está asignando el nombre de dominio a una dirección IP local (interna). No olvide reiniciar el demonio de caché del servicio de nombres después de cambiar el reinicio nscd del servicio /etc/hosts.

información relacionada