SSL en Apache2

Descripción general

SSL nos permite acceder a una página corriendo bajo apache2 utilizando una conexión encriptada, de este modo, para el caso de webmails es muy útil ya que las contraseñas no viajan por la red en texto plano.

Una vez instalado apache2 y teniendo la página en funcionamiento, se deben generar claves y certificados mediante openssl y luego habilitar en la configuración de un determinado sitio de apache2 el uso de SSL.

Por último, también se habilitará sobre el la configuración de la página la redirección del puerto http a https, esto sería del puerto 80 al 443, de este modo se olbliga al cliente a utilizar una conexión segura.

Generar claves y certificados

1.a)- Crear clave

#openssl genrsa -des3 -out webmail-cliente.key 1024

1.b)- Crear CSR
Se inician un conjunto de preguntas, es importante ingresar en common name el nombre de dominio por el que se lo va a acceder, por ej: webmail.softwaresantafe.com :

#openssl req -new -key webmail-cliente.key -out webmail-cliente.csr

1.c)- Firmar el CSR

#openssl x509 -req -days 3650 -in webmail-cliente.csr -signkey webmail-cliente.key -out webmail-cliente.crt
#openssl rsa -in webmail-cliente.key -out webmail-cliente.key

Configurar apache2 y SSL

2.a)- Dentro de /etc/apache2/sites-avaiable/ se debe editar el archivo correspondiente al sitio, por ejemplo, webmail. En el mismo se debe agregar 3 lineas, habilitar el motor SSL (SSL engine), la ruta para la clave generada y para el certificado, solo para el puerto 443.

<VirtualHost x.y.x.w:443>
   ServerAdmin webmaster@blabla.com.ar
   DocumentRoot /home/mi/sitio
    SSLEngine on
    SSLCertificateFile       /etc/apache2/ssl.crt/webmail-cliente.crt
    SSLCertificateKeyFile    /etc/apache2/ssl.key/webmail-cliente.key
   ErrorLog /var/log/apache2/mi.sitio.com.ar-error.log
   CustomLog /var/log/apache2/mi.sitio.com.ar-access.log combined
   <Directory /home/mi/sitio>
   AllowOverride All
   Options MultiViews Indexes SymLinksIfOwnerMatch
   Allow from All
   </Directory>
</VirtualHost>

<VirtualHost x.y.z.w:80>
    ServerAdmin webmaster@blabla.com.ar
    DocumentRoot /home/mi/sitio
    ErrorLog /var/log/apache2/mi.sitio.com.ar-error.log
    CustomLog /var/log/apache2/mi.sitio.com.ar-access.log combined
    <Directory /home/mi/sitio>
     AllowOverride All
     Options MultiViews Indexes SymLinksIfOwnerMatch
     Allow from All
    </Directory>
</VirtualHost>

2.b)- Y por último habilitar (forzar) la redirección automática al puerto 443 para aquellos clientes que accedan al puerto 80

<VirtualHost x.y.z.w:80>
    ServerAdmin webmaster@lunix.com.ar
    DocumentRoot /home/mi/sitio
    ErrorLog /var/log/apache2/mi.sitio.com.ar-error.log
    CustomLog /var/log/apache2/mi.sitio.com.ar-access.log combined
    <Directory /home/mi/sitio>
     AllowOverride All
     Options MultiViews Indexes SymLinksIfOwnerMatch
     Allow from All
    </Directory>
     RewriteEngine on
     RewriteRule ^(.*)$ https://mi.sitio.com.ar$1 [R,L]
</VirtualHost>
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License