Correspondência SNI estrita para o Apache

0

Eu tenho vários vhosts SSL e vhosts não SSL atendidos em um único servidor. Se um dos vhosts não-ssl for acessado usando "https", a primeira diretiva SSL será usada. Existe alguma configuração para fazer com que apenas vhosts com nomes de servidor explicitamente correspondentes possam ser usados?

Então, digamos que eu tenha www.a.com , www.b.com e www.c.com .

Digamos que eu também tenha https://www.a.com e https://www.b.com .

Se eu for para https://www.c.com , é o mesmo que usar o site https://www.a.com . Esse é um comportamento indesejado. Existe algo que eu possa definir para que nenhum site seja usado?

    
por MirroredFate 23.05.2014 / 00:39

3 respostas

1

Eu não acredito, pois o Apache apenas lerá a primeira porta 443 que ela vir e apresentará isso ao usuário.

Você pode fornecer um diretório em branco com uma página .htaccess dentro que possa capturar o que está chegando e redirecionar para a versão http. Você pode fazer isso usando o seguinte:

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Não se esqueça de colocar a configuração httpd.conf para o diretório .htaccess no começo, antes da primeira entrada 443.

    
por 23.05.2014 / 17:52
1

Você deve ter um vhost padrão para conexões SSL. Mas não precisa conter nenhum conteúdo, portanto, você pode criar um novo vhost para essa finalidade e usar um certificado autoassinado.

Esse vhost padrão deve ser configurado para suportar uma versão SSL suficiente para receber o SNI do cliente [fonte: Wiki Apache ]. Ele pode ser configurado com SSLStrictSNIVHostCheck para não permitir clientes sem suporte a SNI.

Tanto quanto eu posso dizer a partir desses links, os clientes que suportam SNI, mas relatam um nome de domínio para o qual você não tem um vhost correspondente explícito, sempre acabam no vhost padrão, e é por isso que você pode querer um sem conteúdo.

Nenhuma abordagem é realmente boa para um domínio sem HTTPS, pois não oferece uma boa experiência ao usuário. Em vez disso, recomendo que você ofereça suporte a HTTPS em todos os seus domínios (é possível obter um certificado gratuitamente) ou use endereços IP diferentes para domínios com e sem suporte HTTPS.

    
por 23.05.2014 / 18:13
0

Use um endereço IP para hosts virtuais que não usem SSL e um endereço IP separado para hosts virtuais que usam SSL. Verifique se as diretivas Listen e VirtualHost para SSL especificam esse endereço IP explicitamente, em vez de, por exemplo, *:443 .

    
por 23.05.2014 / 18:16