CONFIGURAR SSL EN APACHE

abril 1, 2010 a las 11:44 pm | Publicado en Apache, SSL | 1 comentario

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 <admin@dominio.ext>

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’

Crea un blog o un sitio web gratuitos con WordPress.com.
Entries y comentarios feeds.