Por que o httpd manipula pedidos de nomes de hosts incorretos no modo SSL?

1

Eu tenho um host virtual habilitado para SSL para meus sites em example.com:10443

Listen 10443
<VirtualHost _default_:10443>
  ServerName example.com:10443
  ServerAdmin [email protected]
  ErrorLog "/var/log/httpd/error_log"
  TransferLog "/var/log/httpd/access_log"
  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  SSLCertificateFile "/etc/ssl/private/example.com.crt"
  SSLCertificateKeyFile "/etc/ssl/private/example.com.key"
  SSLCertificateChainFile "/etc/ssl/private/sub.class1.server.ca.pem"
  SSLCACertificateFile "/etc/ssl/private/StartCom.pem"
</VirtualHost>

A navegação para o link funciona conforme o esperado. No entanto, a navegação também para o link (com o DNS definido) mostra as mesmas páginas (após o aviso de certificado SSL). Eu teria esperado que a diretiva ServerName example.com:10443 rejeitasse todas as tentativas de conexão para outros nomes de servidores.

Como posso dizer ao host virtual para não atender a solicitações de URLs que não sejam do nível superior?

    
por Manuel 09.11.2013 / 04:07

3 respostas

2

Você não habilitou NameVirtualHost , então o _default_ enviaria qualquer conexão ao seu servidor para a configuração. Experimente assim. Eu adicionei espaçamento para legibilidade

NameVirtualHost *:10443
Listen 10443

<VirtualHost *:10443>
  ServerName example.com:10443
  ServerAlias example.com:10443
  ServerAdmin [email protected]

  ErrorLog "/var/log/httpd/error_log"
  TransferLog "/var/log/httpd/access_log"

  SSLEngine on
  SSLProtocol all -SSLv2
  SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  SSLCertificateFile "/etc/ssl/private/example.com.crt"
  SSLCertificateKeyFile "/etc/ssl/private/example.com.key"
  SSLCertificateChainFile "/etc/ssl/private/sub.class1.server.ca.pem"
  SSLCACertificateFile "/etc/ssl/private/StartCom.pem"

</VirtualHost>
    
por 09.11.2013 / 04:52
1

Você parece não usar a opção NameVirtualHost , portanto, o Apache não se preocupará em verificar o nome do host do servidor na solicitação enviada pelo cliente. A solicitação será direcionada para a primeira seção VirtualHost , em que a porta IP: corresponde e é isso. Qualquer que seja o nome de host que você usa, não importa, você obterá exatamente o mesmo site. Isso é chamado de correspondência de host virtual com base em IP.

Confira o link para obter a semântica completa da correspondência de host virtual, incluindo os resultados do uso NameVirtualHost .

    
por 09.11.2013 / 04:45
0

Apache sempre encontra o melhor ip: port baseado no primeiro passo, quando apenas detalhes do nível de conexão estão disponíveis, então olha nomes de host em um segundo passe do que resta (se no 2.2, uma diretiva NameVirtualHost deve estar presente para permitir o segundo passo)

default é o mesmo que *. Se você tiver apenas um host virtual para uma porta, ele será usado independentemente de haver uma correspondência de vhost baseada em nome.

Se você quiser um pega-tudo para * ou um IP específico, crie-o como o primeiro host virtual em um conjunto de combinações ip: port correspondentes. Você pode rejeitar as coisas de lá.

    
por 10.11.2013 / 16:02