Activar https en Apache2 en Debian 6
instalar cerficado de https en debian, servidor apache2 de paquetes
1- instalar el módulo mod_ssl
Para OpenSSL
2- ver si está activo el módulo mod_ssl
apachectl -M
3- verificar si el módulo tiene su configuración en
ls -l /etc/apache2/mods-available
entre los archivos de configuración deben encontrarse
ssl.conf configura ssl
ssl.load carga el módulo de ssl en el servidor apache2
4- verificar si se encuntran activados debería haber una liga simbolica dentro del directorio etc/apache2/mods-enabled/ a /etc/apache2/mods-available/ssl.conf y /etc/apache2/mods-available/ssl.load, si se encuentran cargados debemos investigar porque no están activos, tal vez la ruta hacia el módulo de ssl, que se encuentra en el archivo ssl.load no sea la correcta.
5- Ahora vamos a porner los certificados en su lugar
Dentro del directorio /etc/ssl vamos ha crear los siguientes directorios
certs lugar donde van los certificados
private lugar donde va la llave privada
chain lugar donde va la cadena de la contrseña del certificado
6- Para activar el modulo de ssl
a2enmod mod_ssl (si da error intentar con el siguiente comando)
o
a2enmod ssl
al activar el módulo nos aparece una leyenda como esta:
Enabling module ssl.
See /usr/share/doc/apache2.2-common/README.Debian.gz on how to configure SSL and create self-signed certificates.
Run '/etc/init.d/apache2 restart' to activate new configuration!
7- verificar que tenemos el puerto 443 abierto, esto lo debemos hacer desde otro equipo
telnet ip 443
si nos aparece un mensaje como este:
telnet: Unable to connect to remote host: Connection refused
o nunca nos responde
debemos ir a decirle a la persona que administra el firewall que nos abra el puerto 443 de la ip que tiene asignada nuestro servidor. Sí ya está abierto y aún sigues sin poder ejecutar la prueba
telnet ip 443, con éxito en tu servidor debe haber un firewall llamado Netfilter y que es manejado por el comando iptables, y deberás crear una regla para que te permita el acceso desde ese puerto o reinicien apache y listo.
8- dentro de nuestro virtualhost de nuestro servidor
añadimos las líneas siguientes:
<VirtualHost *:80>
RedirectMatch (.*) https://nombrededominio$1
</VirtualHost>
Lo anterior sirve para que las perticiones que llegan al puero 80 (http)
sean redirigidas al puerto 443, la expresión regular significa que todos los caracters de la petición sean reenviados https://nombrededominio$1, el símbolo de pesitos y el número uno indican que la ruta pedida después del dominio sea pedida y no sólo se haga la petición a la raíz del servidor https://nombrededominio.
Ahora dentro del mismo archivo crearemos otro virtualhost, pero que escuche por el puerto 443
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/ssl/certs/nombrecertificado.crt
SSLCertificateKeyFile /etc/ssl/private/nombredelarchivoquecontienelallave.key
SSLCertificateChainFile /etc/ssl/chain/cadena.crt
.aquí poner las lineas de configuración que antes estaban en el virtualhost antigüo que escuchaba por el puerto 80
.
.
.
.
</virtualhost>
9- Reiniciar el servidor apache2
/etc/init.d/apache2 restart
10- Probar que todo ha salido bien entrando al sitio web por https, desde nuestro navegador.
Listo!!!