¿Cómo deshabilitar el acceso https a hosts virtuales específicos?

10

Bien, tengo un servidor Apache configurado con las siguientes directivas:

NameVirtualHost *:80

<VirtualHost *:80>  
ServerName example1.com  
ServerAlias www.example1.com  
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
ServerAlias *.example2.com
DocumentRoot /var/www/example2
</VirtualHost>

<VirtualHost example1.com:443>
DocumentRoot /var/www/html
ServerName example1.com:443
SSLEngine on
...
</VirtualHosts>

Por lo tanto, example1.com tiene soporte SSL y se puede acceder a través de http: // example1.com o https: // example1.com. Sin embargo, esto tiene el efecto secundario no deseado de mostrar https: // example1.com cuando visito https: // example2.com en mi navegador. Lo que quiero hacer es básicamente deshabilitar https: // example2.com de alguna manera o redirigirlo a http: // example2.com para que no reciba una advertencia y el sitio incorrecto cuando lo visite.

nearengine
fuente

Respuestas:

7

No podrá evitar recibir una advertencia, a menos que el ejemplo1 y el ejemplo2 se encuentren en direcciones IP diferentes u obtenga un certificado SSL que cubra ambos nombres; no se puede generar una página de error o redireccionamiento hasta que se establezca la conexión SSL.

Dicho esto, algo en este sentido debería funcionar:

NameVirtualHost *:443
<VirtualHost *:443>
  ServerName example1.com
  SSLEngine on
  #...
</VirtualHost>
<VirtualHost *:443>
  ServerName example2.com
  SSLEngine on
  # same certificate config here as on example1, unless you're wanting to use TLS SNI
  # then, let's redirect the user to non-SSL
  Redirect permanent / http://example2.com/
</VirtualHost>
Shane Madden
fuente
¡Gracias! Creo que me faltaba la directiva NameVirtualHost y Apache pensó que estaba tratando de hacer que dos hosts virtuales entraran en conflicto entre sí. Curiosamente, Chrome no está lanzando una advertencia sobre esta redirección ... Pero no estoy preocupado por eso, simplemente no quiero que mi sitio SSL aparezca bajo otros nombres de dominio.
nearengine
¿No es lo mismo que agregar certificados inválidos para recurrir a non-ssl? Supongo que puede agregar _fake directamente al nombre de los certificados en su directiva vhost.
m3nda
0

no creo que debas poner: 443 en ServerName example1.com:443

estos deben estar configurados correctamente

<VirtualHost example1.com:443> //change example1.com to ip address is a good habit
DocumentRoot /var/www/html
ServerName example1.com
SSLEngine on
...
</VirtualHosts>
tywtyw2002
fuente
0

Debe tener la Indicación de nombre del servidor (SNI) para lograr esto. Consulte el enlace: http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI para obtener más detalles.

Karthikeyan
fuente
1
Votado abajo porque no proporcionó una respuesta o ejemplo, solo un enlace (que no se garantiza que esté allí permanentemente)
Chris Bloom