Como desativar o pega-tudo em um host virtual ssl

1

Meu host virtual parece com o seguinte:

<VirtualHost example.com:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl-keys/example/example.crt
  SSLCertificateKeyFile /etc/apache2/ssl-keys/example/example.key
  SSLCACertificateFile /etc/apache2/ssl-keys/example/COMODO_EV_SSL.ca-bundle.crt

  SSLProtocol -ALL -SSLv3 +TLSv1
  SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM

  SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
  BrowserMatch ".*MSIE.*" \
     nokeepalive ssl-unclean-shutdown \
     downgrade-1.0 force-response-1.0

  CustomLog logs/ssl_request_log \
     "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

  DocumentRoot /home/example/www/current/web
  ServerName example.com
  ServerAlias www.example.com
  <IfModule php5_module>
    php_value newrelic.appname "Example"
  </IfModule>
</VirtualHost>

Se eu for para o link : // example.com tudo é bom, no entanto, para desconhecido por mim, se for a qualquer outro domínio que está apontando para o mesmo servidor como link : // anydomain.com , então o vhost acima está respondendo. Obviamente, o navegador diz que o certificado não corresponde a um domínio, mas depois de ignorá-lo eu posso ver o site de link : // example.com em link : // anydomain.com , mesmo sob link : // anydomain.com Eu tenho um site totalmente diferente.

Eu sei que poder usar link no link : // anydomain.com eu precisaria configurar outro certificado com outro endereço IP - e isso não é problema meu.

Gostaria de obter uma das seguintes opções:

  • link : // anydomain.com deve apontar para link : // anydomain. com
  • link : // anydomain.com retorna erro 404

Como faço para isso? Obrigado antecipadamente.

    
por Tomasz Ozga 19.05.2015 / 22:37

1 resposta

1

Se você definir apenas um vhost para sua porta, ele será tratado pelo apache como um vhost padrão e será servido para qualquer cliente que se conecte a ele.

O que você precisa, portanto, é adicionar outro vhost, indicar que ele deve ser tratado como padrão e configurá-lo para que ele seja 404 clientes. Você deve usar o mesmo certificado de example.com, porque ele será usado até mesmo para clientes que acessarem o link caso não usem SNI .

Então, isso deve ficar assim:

<VirtualHost _default_:443>
  SSLEngine on
  SSLCertificateFile /etc/apache2/ssl-keys/example/example.crt
  SSLCertificateKeyFile /etc/apache2/ssl-keys/example/example.key
  SSLCACertificateFile /etc/apache2/ssl-keys/example/COMODO_EV_SSL.ca-bundle.crt

  SSLProtocol -ALL -SSLv3 +TLSv1
  SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM

  Redirect 404 /
</VirtualHost>

Note que se você não está preocupado com clientes sem SNI (eles tendem a ser poucos daqueles atualmente), você poderia muito bem ter qualquer número de sites https com diferentes certificados TLS no mesmo ip. A limitação da hospedagem ssl virtual se deve ao fato de que clientes não-SNI não anunciam à camada SSL qual vhost desejam acessar antes que o certificado tenha que ser oferecido.

    
por 20.05.2015 / 12:09