Javier Barber
Senior Sysadmin Freelancer
CONFIGURAR SSL EN APACHE
Lo primero es comprobar que tenemos las librerías necesarias en /usr/lib/apache2/modules/.
Debemos tener mod_ssl.so.
Luego debemos comprobar que el módulo de ssl está habilitado para en el apache. Tenemos que crear enlaces en /etc/apache2/mods-enabled de los ficheros /etc/apache2/mods-available/{ssl.conf | ssl.load}.
Reiniciamos el apache para que tomen efecto.
Lo siguiente es modificar el virtual host que tengamos creado de la siguiente manera:
1) Modificar la cabecera para que sólo acepte tráfico por el puerto 443
<VirtualHost *:443>
2) Añadir el nombre y el admin del servidor si no lo están aún:
ServerName <host.dominio.ext>
ServerAdmin <[email protected]>
Hay que tener en cuenta que el nombre del servidor coincida con el que vamos a utilizar en el certificado.
3) Añadimos las sentencias necesarias para habilitar SSL:
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/server.pem
SSLCACertificateFile /etc/apache2/ssl/server.cer
También lo podríamos haber hecho con la clave (.key) en vez de con el .pem utilizando «SSLCertificateKeyFile»
4) Si queremos que las peticiones HTTP se redirigan a HTTPS añadimos las siguientes líneas al httpd.conf:
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
5) Si existe la referencia «NameVirtualHost *» en el fichero apache2.conf, la debemos eliminar para evitar un error por haber definido el *:443 en el virtual host.
Reiniciamos el apache.
Anexo:
Si queremos especificar que no se habilite el débil SSL v2 modificamos el fichero /etc/apache3/mods-available/ssl.conf añadiendo la siguiente línea (o descomentándola):
SSLProtocol all -SSLv2
Podemos además especificar qué métodos de cifrado queremos que se utilicen con la directiva SSLCipherSuite del mismo fichero.
Por ejemplo con:
SSLCipherSuite HIGH:MEDIUM:!ADH
sólo habilitaríamos los más seguros.
En el caso de tener :
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
El LOW es un método de 128 bits que debemos evitar.
Se puede quitar cualquiera con «!». Por ejemplo:
SSLCipherSuite
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:!SSLv2:+EXP:+eNULL
Se pueden comprobar los métodos soportados con:
openssl ciphers -v
También podemos ver los que configuraríamos con los parámetros de SSLCipherSuite:
openssl ciphers -v ‘HIGH:MEDIUM:!ADH’