Defina o vhost TLS SNI padrão para o Apache 2.2 no CentOS 6

1

Eu tenho um servidor do CentOS 6 com o Apache (httpd-2.2.15-15.el6.centos.x86_64). Agora eu configurei o TLS SNI usando o OpenSSL e isso foi muito fácil.

Agora eu tenho dois vhosts TLS no mesmo ip e eu quero especificar qual deles deve ser o padrão, o cliente não suporta o TLS SNI (sim, estou olhando para você, git / hg).

Olhando os documentos do Apache, deve haver pelo menos duas maneiras de fazer isso:

  • definido para o host padrão (e *: 443 para todos os outros)
  • defina "SSLStrictSNIVHostCheck on" para os hosts não padrão.

Infelizmente, nenhum método funciona para mim. Alguém pode me explicar como alcançar o objetivo de qualquer maneira e por que os dois métodos acima não funcionam como eu esperava?

    
por Felix Schwarz 15.01.2012 / 11:32

1 resposta

2

O primeiro habilitado será o padrão então renomeie o arquivo de configuração do vhost padrão para algo como 00-config_file_name , então é o primeiro carregado.

Como você (com razão) gostaria de algo documentado:

A partir de documentos do Apache: Uma discussão aprofundada sobre a correspondência de host virtual

Name-based vhost

If the entry corresponds to a name-based vhost the name list contains one or more vhost structures. This list contains the vhosts in the same order as the VirtualHost directives appear in the config file.

The first vhost on this list (the first vhost in the config file with the specified IP address) has the highest priority and catches any request to an unknown server name or a request without a Host: header field.

If the client provided a Host: header field the list is searched for a matching vhost and the first hit on a ServerName or ServerAlias is taken and the request is served from that vhost. A Host: header field can contain a port number, but Apache always matches against the real port to which the client sent the request.

Portanto, se você usar apenas 1 arquivo de configuração para seus vhosts, será necessário encomendá-los no arquivo e incluir vários arquivos separados (incluindo o diretório ../sites-enabled, que é o modo como o site de amostra Apache2 está definido) precisa carregar os arquivos na ordem que você precisa para definir o site padrão primeiro e eles são carregados de acordo com a ordem alfabética do diretório.

Sempre de acordo com o mesmo documento do Apache (link de exemplos a seguir na página), se você usar _default_ vhost, ele deve ser definido antes de outros vhosts e é exatamente o que você fará definindo o vhost na ordem desejada mas ao usar _default_ vhost, o servidor principal não responderá mais às solicitações.

    
por 15.01.2012 / 18:49