Si desea ofrecer HTTPS desde el inicio, debe proporcionar un certificado aceptado por el cliente desde el inicio. Porque de lo contrario, el cliente no aceptará la conexión SSL y no podrá redirigir el cliente a un sitio diferente o una versión solo HTTP. Esto significa apoyar este caso usted
- o bien debe tener un único certificado que contenga todos sus dominios, de modo que pueda proporcionar a los clientes que no son SNI un certificado adecuado. Pero en este caso no necesita SNI en absoluto.
- o debe instalar algún certificado predeterminado que no coincida con la mayoría de sus nombres. En este caso, solo puede proporcionar al cliente una página diferente o redirigirla si el cliente acepta este certificado incorrecto.
Si no necesita tener HTTPS desde el principio, es decir, si el cliente generalmente se conecta primero con HTTP simple, puede intentar detectar el soporte SNI para poder redirigir el cliente más tarde. Esto puede hacerse mediante la inclusión de una imagen, algunos JavaScript o cosas similares de su sitio HTTPS y si la carga se realiza correctamente, entonces sabe que el cliente admite SNI o ignora los errores de certificado.
Por supuesto, esto deja todo abierto a los ataques de hombre en el medio, porque todo lo que tiene que hacer el hombre en el medio es entregar un certificado diferente o hacer que HTTPS no esté disponible, porque en este caso nunca lo intentará para actualizar la conexión a HTTPS. Además, esto se puede usar para que parezca que los clientes admiten SNI, si el intermediario lo hace en su lugar. Y no solo los clientes no SNI se ven afectados por esto, sino que los clientes con capacidad SNI solo pueden ser interceptados. Entonces, si bien esto sería posible en teoría, no se recomienda porque puede simplemente manipular todo en el medio y, por lo tanto, hacer que el punto principal del uso de HTTPS sea discutible.