Mi host virtual se ve así:
<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>
Si voy ahttps://ejemplo.comtodo está bien, sin embargo, por una razón desconocida si voy a cualquier otro dominio que apunte al mismo servidor comohttps://cualquierdominio.comentonces el vhost de arriba está respondiendo. Obviamente el navegador dice que el certificado no coincide con un dominio, pero después de ignorarlo puedo ver el sitio web desdehttps://ejemplo.combajohttps://cualquierdominio.com, incluso eso bajohttp://cualquierdominio.comTengo un sitio web totalmente diferente.
Sé que para poder usarhttpsenhttp://cualquierdominio.comNecesitaría configurar otro certificado con otra dirección IP y ese no es mi problema.
Me gustaría lograr una de las siguientes opciones:
- https://cualquierdominio.comdebería señalar ahttp://cualquierdominio.com
- https://cualquierdominio.comdevuelve error 404
¿Cómo logro esto? Gracias de antemano.
Respuesta1
Si define solo un vhost para su puerto, Apache lo tratará como un vhost predeterminado y se entregará a cualquier cliente que se conecte a él.
Por lo tanto, lo que necesita es agregar otro vhost, indicar que debe tratarse como el predeterminado y configurarlo para que tenga 404 clientes. Debe utilizar el mismo certificado que el de ejemplo.com, ya que se utilizará incluso para los clientes que accedanhttps://ejemplo.comsi no usanSNI.
Entonces eso debería verse así:
<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>
Tenga en cuenta que si no le preocupan los clientes sin SNI (hoy en día tienden a ser pocos), es muy posible que tenga cualquier número de sitios web https con diferentes certificados TLS en la misma IP. La limitación del alojamiento SSL virtual se debe al hecho de que los clientes que no son SNI no anuncian en la capa SSL a qué host virtual desean acceder antes de que se ofrezca el certificado.