Generar ssl para apache
Para generar el certificado que utiliza el servidor web Apache para el servicio SSL a través de HTTPS. Ejecuta lo siguiente:
apache2-ssl-certificate —force -days 365 -set_serial 2
Esto crea el /etc/apache2/ssl/apache.pem que contiene el certificado y la clave del servidor. El número de serie debería ser uno más de lo que haya en el certificado anterior.
En /etc/apache2/ssl.crt/ hay sendos enlaces simbólicos (server.key y server.crt) que apuntan al fichero generado. Sendos enlaces los utilizaremos despues para generar el virtual host. Reiniciar apache.
/etc/init.d/apache2 restart
Configurar el puerto
Editamos el fichero /etc/apache2/ports.conf para que quede así:
NameVirtualHost *:80 Listen 80 <IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 </IfModule>
Archivo de configuración para el virtualhost
Creamos un fichero nuevo en /etc/apache2/sites-available que representa un nuevo sitio web. Por ejemplo lo podemos llamar “nombreSite-ssl” y debe contener algo como esto:
<VirtualHost *:443> ServerName www.nombreDominio.com ServerAlias nombreDominio SSLEngine on #claves generadas en el primer paso de este mini-manual SSLCertificateFile /etc/apache2/ssl.crt/server.crt SSLCertificateKeyFile /etc/apache2/ssl.crt/server.key ........
Habilitamos el nuevo site como ssl
a2ensite nombreSite-ssl
Activamos el módulo ssl
a2enmod ssl
Reinicimas apache o forzamos la carga de la nueva configuració
/etc/init.d/apache2 force-reload
Con esto tendremos nuestro site ssl funcionando. Quizá nos interese que tambien funcione en modo ssl cuando el usuario no introduzca en la url https://, es decir que entre directament desde http://.
En ese caso, lo más fácil es crear un VirtualHost no-SSL que redireccione todas las peticiones al VirtualHost SSL. Para eso, crea un fichero /etc/apache2/sites-available/nombreSit-redir con las siguientes lineas:
<VirtualHost ; RewriteEngine on
RewriteLog /var/log/apache2/https_rewrite.log
RewriteLogLevel 1
RewriteCond {SERVER_PORT} !^443$
RewriteRule ^/(.</strong>) https://{SERVER_NAME}/$1 [L,R]
</VirtualHost>
Finalmente aplicaremos los nuevos parametros:
a2ensite nombreSit-redir /etc/init.d/apache2 restart
Problemas con apache2-ssl-certificate, arroja command not found
viene a ser sustituida por:
openssl genrsa -des3 -out server.key 1024 openssl rsa -in server.key -out server.pem openssl req -new -key server.key -out server.csr openssl x509 -req -days 360 -in server.csr -signkey server.key -out server.crt
Opcional: para que no se pida la clave cada vez que se arranca el servidor:
mv key.pem key.pem.SEGURA openssl rsa -in key.pem.SEGURA -out key.pem
Resumen de todos los pasos a seguir
######## apache2-ssl-certificate —force -days 365 -set_serial 2 ######## /etc/init.d/apache2 restart ######## nano /etc/apache2/ports.conf ######## NameVirtualHost *:80 Listen 80 <IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 </IfModule> ######## a2ensite nombreSite-ssl ######## a2enmod ssl ######## /etc/init.d/apache2 force-reload ######## nano /etc/apache2/sites-available/nombreSit-redir ######## <VirtualHost ; RewriteEngine on RewriteLog /var/log/apache2/https_rewrite.log RewriteLogLevel 1 RewriteCond {SERVER_PORT} !^443$ RewriteRule ^/(.</strong>) https://{SERVER_NAME}/$1 [L,R] </VirtualHost>


