Configurar Apache con subdominio con https?

Buenas amigos!

Llevo unos dias peleandome con un servidor privado virtual (VPS) que he contratado para empezar a trastear con él y no consigo que uno de los subdominios que sirve lo trate con https.
Mi escenario es el siguiente. A este servidor le he asignado 2 subdominios vps.midominio.com y seguro.midominio.com con 2 redirecciones A a su IP. Los DNS estan en otro servidor.
Ahora quiero que el subdominio vps entre por el puerto 80 (http) y el secure por el 443. Problemas con los que me he encontrado:
- La definicion NameVirtualHost *:80 debe ir en el fichero default de sites-available o debe de ir en el ports.conf? Creo que si lo dejo en ambos me salta un error al iniciar el apache.
- Al generar el certificado lo hice indicando el dominio "global" (midominio.com). ¿deberia generarlo para el subdominio que quiero que tenga https?, es decir, para secure.midominio.com?
- La directiva SSL la activo en el fichero default de sites-available
<VirtualHost *:443>
        ServerAdmin postmaster@midominio.com
        DocumentRoot /var/www/secure/
        ServerName secure.midominio.com
        <Directory /var/www/secure/>
                Options Indexes MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
        SSLEngine On
        SSLCertificateFile    /etc/ssl/certs/publico.pem
        SSLCertificateKeyFile /etc/ssl/private/privado.pem
</VirtualHost>

lo que no sé es si debo hacerlo en el default-ssl. Despues de tantas pruebas el default-ssl que se crea por defecto me lo he cargado, al igual que el 000-default-ssl que creo que se genera en sites-enable.

Al final me he leido tantas formas de activar el https que he ido haciendo un batiburrillo de cosas que me han dejado perdido por completo. A ver si podeis decidme las 4 cosas importantes a tener en cuenta y así me situo un poco.

Muchas gracias
Si la directiva NameVirtualHost la tienes definida en ports.conf, la configuración que tienes del vhost me parece correcta. Obviamente tienes que crear un link simbólico del fichero default en sites-enabled, si es que no lo tienes ya:
# a2ensite default
# apache2ctl configtest
# service apache2 reload

El certificado tienes que generarlo para el subdominio en cuestión, a no ser que sea un certificado wildcard, que no es el caso. Sinó el navegador se te quejará de que el certificado es para otro sitio.

Por lo que dices debería funcionar. ¿Qué problema tienes exactamente?
Buenas,
Muchas gracias por tu tiempo!
He hecho limpia de basura que he ido generando en los ficheros haciendo las pruebas y parece que funciona. Como bien dices, el navegador se queja del certificado, pero al "firmarlo" por CAcert.org, si pongo el subdominio, lo debo confirmar con alguna cuenta de correo de ese subdominio, cosa que no tengo (admin@secure.midominio.com). Este es un mal menor, ya que practicamente es para uso personal y por el hecho de saber hacerlo.

El comportamiento de Apache ahora mismo es el siguiente y me gustaria hacer unos cambios:
- si introduzo https://secure.midominio.com me redirige a /secure con encriptacion -> OK, perfecto
- si introduzco secure.midominio.com me redirige a vps.midominio.com -> MAL, me gustaria que me obligara a usar https.
- si introduzco vps.midominio.com me redirige a /vps -> OK
- si introduzco https://vps.midominio.com me redirige a index.html que existe en la raiz de /www -> MAL, me gustaria que forzara el https en vps.midominio.com

Espero no abusar de tu ayuda. Mil gracias!
Añade otro virtualhost que responda en el puerto 80 con el mismo ServerName (puedes hacerlo en el mismo fichero) y puedes hacer una redirección a https://secure.midominio.com con mod_rewrite.
Para el segundo dominio lo mismo pero al revés, añade otro virtualhost igual que el virtualhost que ya tienes pero que escuche en el puerto 443.
buenas,
Ten en cuenta que Apache no permite varios vhost ssl por el mismo puerto (a menos que le hayan añadido la feature, que lo dudo).
Yo te respondo a lo del certificado y el subdominio. Seguramente lo hayas autofirmado, si es así, no te preocupes por que la alerta en el navegador te va a saltar igualmente [bad].
Si te la ha firmado alguie (thawte or similar) sí que deberías generar el CRL como subdominio.dominio.com para que no te salte la alerta de el nomber de dominio no se corresponde con donde estás... A no ser que pidas un wildcard (*.dominio.com) que vale una pasta ;-)
El resto, Yog-Sothoth ya te lo ha respondido XD te recomiendo que te leas la docu del mod_rewrite, es una de las cosas más potentes de apache ;-)
Perfecto, ya lo tengo todo como queria!!
Muchas gracias por tu ayuda!

Otra cosa que me estaba ocurriendo es que me estaba cargando la configuracion SSL que estaba descrita en el fichero default-ssl del directorio sites-available. Para que me cogiera la configuracion de todos los host virtuales que teneia configurada en el fichero default he descomentado la linea NameVirtualHost *:443 del fichero ports.conf ya que al lanzar el apache me soltaba el warning:
[warn] _default_ VirtualHost overlap on port 443, the first has precedence


Lo dicho, mil gracias

EDIT:
Acabo de leer tu comentario. Ya he conseguido que cualquier peticion al subdominio secure me la redirija al https. Tambien que una peticion "ex profeso" al subdominio vps con https me la redirija al mismo directorio que si fuera una peticion no segura. Entiendo que así apache está permitiendo varios vhost por el mismo puerto (el 443 de https), no?. El caso es que lo esta haciendo.

He firmado el dominio con CAcert.org, pero si lo intento hacer con el subdominio debo confirmar que es de mi propiedad recibiendo un mail en una cuenta de ese subdominio (@vps.midominio.com) cosa que no tengo. Supongo que para tenerla tendré que crear los registros MX en mi DNS para ese subdominio, redirigiendolos a la IP de mi VPS y montar alli el servidor de correo. Supongo que será lo siguiente que haga para entretenerme.
Gracias por las respuestas.
No exactamente, lo que yo decía es lo del "overlap", es decir que si pones:
<VirtualHost *:443>
        ServerAdmin postmaster@midominio.com
        DocumentRoot /var/www/secure1/
        ServerName secure1.midominio.com
</VirtualHost>
<VirtualHost *:443>
        ServerAdmin postmaster@midominio.com
        DocumentRoot /var/www/secure2/
        ServerName secure2.midominio.com
</VirtualHost>

Petará.
Hay múltiples pajas mentales para intentar hacerlo funcionar (si buscas por google lo verás)
Yo opté por Nginx [beer]
6 respuestas