] > Generar ssl para apache - MIRULU INFORMATIZATE
 [+]
 

Generar ssl para apache

| PDF| Imprimir |

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>