20. Apache - Instalación y administración de SSL
1. Introducción
- Apache ofrece soluciones para la comunicación segura mediante canales SSL a través del software gratuito de código abierto openssl (http://www.openssl.org).
- Para ello es preciso compilar Apache con las opciones:
./configure --enable-ssl --with-ssl=ruta_hacia_openssl
(la ruta hacia openssl es /usr/local/ssl en la instalación predeterminada de openssl).
2.1 Emisión de un certificado de servidor.
- Mediante openssl, generamos una clave privada:
openssl genrsa -out servidor.key 1024
- Creamos una solicitud de certificado:
openssl req -new -key servidor.key -out servidor.csr
- Ahora podemos elegir entre enviar nuestra solicitud de firma de certificado (Certificate Signing Request) a una entidad emisora de certificados (Thawte, Entrust, Verisign, etc.) o firmarlo nosotros mismos mediante openssl:
openssl x509 -req -days 365 -in servidor.csr -signkey servidor.key –out servidor.crt
2.2 Instalación de un certificado de servidor
- Para indicar a Apache que utilice un certificado de servidor para conexiones SSL, simplemente hay que utilizar las siguientes directivas, indicando la ruta hacia el certificado y hacia la clave privada:
- SSLEngine On
- SSLCertificateFile ruta_al_certificado
- SSLCertificateKeyFile ruta_a_la_clave_privada
Nota: estas funciones son propias del mod_ssl de Apache.
2.3 Configuración de Apache con SSL
Un ejemplo de servidor configurado con SSL:
NameVirtualHost * <VirtualHost *:80> ServerName www.servidor1.com DocumentRoot /www/servidor1 </VirtualHost>< VirtualHost *:80> ServerName www.servidor2.com DocumentRoot /www/servidor2 </VirtualHost>< VirtualHost *:443> SSLEngine On SSLCertificateFile /www/ssl/ssl.crt SSLCertificateKeyFile /www/ssl/ssl.key ServerName www.servidor-seguro.com DocumentRoot /www/servidor-seguro </VirtualHost> |
2.4 Indicaciones
- No hay que olvidar que todos los puertos por los que escucha Apache hay que indicarlos con la directiva Listen. Por ejemplo:
Listen 80
Listen 443
- Por la definición del protocolo https, no se puede emplear la etiqueta Hostname para discriminar peticiones seguras, de modo que un servidor, por cada dirección IP y puerto sólo admite un servidor virtual.
- Si deseamos que el acceso al contenido de un directorio esté prohibido a menos que se realice mediante una conexión segura, podemos incluir SSLRequireSSL en un bloque Directory o una directiva .htaccess
vidalmb_admin – Mar, 24/07/2007 – 14:31