Se você quiser oferecer HTTPS desde o início, é necessário fornecer um certificado aceito pelo cliente desde o início. Porque senão o cliente não aceitará a conexão SSL e você não poderá redirecionar o cliente para um site diferente ou uma versão somente HTTP. Isto significa apoiar este caso você
- também precisa ter um único certificado contendo todos os seus domínios, para que você possa fornecer aos clientes não-SNI um certificado adequado. Mas neste caso você não precisa de SNI.
- ou você precisa instalar um certificado padrão que não corresponde à maioria dos seus nomes. Nesse caso, você só pode fornecer ao cliente uma página diferente ou redirecioná-lo se o cliente aceitar esse certificado inválido.
Se você não precisa ter HTTPS desde o início, isto é, se o cliente geralmente se conecta primeiro com HTTP simples, então você pode tentar detectar o suporte a SNI para que você possa redirecionar o cliente posteriormente. Isso pode ser feito incluindo uma imagem, algum JavaScript ou algo semelhante em seu site HTTPS e, se o carregamento for bem-sucedido, você saberá que o cliente suporta SNI ou ignora erros de certificado.
É claro que isso deixa tudo aberto para ataques man-in-the-middle, porque todo o man-in-the-middle tem que fazer é servir algum certificado diferente ou tornar o HTTPS indisponível, porque nesse caso você nunca tentará atualizar a conexão para HTTPS. Além disso, isso pode ser usado para fazer parecer que os clientes suportam SNI, se o intermediário fizer isso. E não apenas os clientes não SNI são afetados por isso, mas os clientes compatíveis com SNI só podem ser interceptados. Então, enquanto isso seria possível, em teoria, não é recomendado porque você pode simplesmente man-in-the-middle tudo e, portanto, fazer o ponto principal de usar HTTPS moot.