Herramientas de usuario

Herramientas del sitio


informatica:certificaciones:lpic:lpic-2:208_web_services:208.2_apache_configuration_for_https

208.2 Apache configuration for HTTPS

Pertence a Topic 208: Web Services

  • Weight: 3
  • Description: Candidates should be able to configure a web server to provide HTTPS.
  • Key Knowledge Areas:
    • SSL configuration files, tools and utilities
    • Generate a server private key and CSR for a commercial CA
    • Generate a self-signed Certificate
    • Install the key and certificate, including intermediate CAs
    • Configure Virtual Hosting using SNI
    • Awareness of the issues with Virtual Hosting and use of SSL
    • Security issues in SSL use, disable insecure protocols and ciphers
  • Terms and Utilities:
    • Apache2 configuration files
    • /etc/ssl/, /etc/pki/
    • openssl, CA.pl
    • SSLEngine, SSLCertificateKeyFile, SSLCertificateFile
    • SSLCACertificateFile, SSLCACertificatePath
    • SSLProtocol, SSLCipherSuite, ServerTokens, ServerSignature, TraceEnable

SSL

SSL (Secure Socket Layer) es un protocolo de seguridad de la capa de aplicación.

Funciona con muchos protocolos, pero su uso más extendido es para asegurar http (https).

SSL proporciona servicios de autentificación, de confidencialidad y de control de la integridad.

Criptografía y certificados

Cualquier infraestructura criptográfica se basa en algoritmos de cifrado. Estos algoritmos pueden pertenecer a tres familias distintas: los algoritmos simétricos, donde se cifra y se descifra gracias a una clave única; los algoritmos asimétricos, donde se dispone de un par de claves, una para cifrar y otra para descifrar, y, finalmente, los algoritmos de hash, de un solo sentido y que no usan la clave de cifrado.

SSL utiliza criptografía asimétrica, la cual utiliza 2 claves, una pública y otra privada.

Los certificados digitales X509 tienen como objetivo establecer de modo formal un enlace entre una identidad (nombre, dirección IP, etc.) y una clave pública.

Los certificados no pueden falsificarse, ya que están firmados por un tercero Certificate Authority (autoridad de certificación) con quien todos tienen una relación de confianza.

Apache

mod_ssl

Para poder activar el soporte de ssl en Apache necesitamos el módulo correspondiente: mod_ssl

Suele venir de serie con la instalación de apache, o si no debemos instalar el paquete openssl

Para activarlo, debemos incluir en la configuración la línea LoadModule correspondiente (Centos/RedHat):

LoadModule mod_ssl modules/mod_ssl.so

O activar el módulo de modo dinámico con la herramienta a2enmod (Debian/Ubuntu):

a2enmod ssl

mod_ssl y Certificados

Después de esto reiniciamos el servidor apache, y el mod_ssl se activará con el inicio de Apache

El siguiente paso es disponer de un certificado ssl válido

Podemos obtener el certificado de una Autoridad Certificadora (CA), o podemos utilizar un certificado autofirmado.

Los certificados, por defecto, se encuentran en la ruta /etc/ssl/certs

Las claves están en /etc/ssl/private

Si queremos generar un certificado autofirmado usaremos la herramienta openssl

Generación del certificado autofirmado

openssl req -x509 -nodes -newkey rsa:<tamaño_clave> -keyout <archivo_clave> -out <archivo_certificado>
Parámetro Descripción
req Solicitud de certificado.
-x509 Se desea un certificado autofirmado y no una petición de firma una CA.
-nodes La clave del servidor no debe estar protegida con contraseña.
-newkey rsa:<tamaño_clave> Se crean nuevas claves asimétricas RSA cuyo tamaño se proporciona en número de bits.
-keyout <archivo_clave> El archivo que contiene la clave privada del servidor.
-out <archivo_certificado> El archivo que contiene el certificado del servidor.

Ejemplo:

openssl req -x509 -nodes -newkey rsa:1024 -keyout /root/servidor.key -out /root/certificado.pem

Pedirá una serie de datos para generar la clave:

  • Country Name
  • Province Name
  • Locality Name
  • Organization Name
  • Organizational Unit Name
  • Common Name
  • E-mail address

Finalmente se habrán generado los siguientes ficheros:

  • servidor.key
  • certificado.pem

Configuración de SSL

Pasos:

1. El módulo necesario para el funcionamiento de SSL es mod_ssl:

LoadModule ssl_module /ruta/mod_ssl.so

2. Configuración de las claves del servidor:

SSLCertificateFile /ruta/archivo_certificado
SSLCertificateKeyFile /ruta/archivo_clave
Parámetro Descripción
SSLCertificateFile Define el archivo que contiene el certificado del servidor (con su clave pública).
SSLCertificateKeyFile Define el archivo que contiene la clave privada del servidor.

3. Apertura del puerto HTTPS añadiendo en ports.conf:

Listen 443

4. Activación del motor SSL:

SSLEngine on

Los anteriores parámetros deben incluirse en el fichero apache2.conf

5. (Opcional) Autentificación de los clientes de otra CA mediante certificado. En esta situación, el servidor Apache tiene que disponer de un certificado de la autoridad que haya emitido los certificados de los clientes:

SSLVerifyClient require
SSLCACertificateFile certificado_ca

Otras directivas de configuración SSL

Directiva Descripción
SSLCACertificateFile Indica el fichero que contiene la cadena de los certificados de las CAs en orden de preferencia.
SSLCACertificatePath Indica el directorio que contiene los certificados de las CAs.
SSLCipherSuite Establece los tipos de cifrados permitidos.
SSLProtocol Establece los tipos de protocolos permitidos.
ServerSignature
ServerTokens Controla el tipo de cabecera que de envía a los clientes en cada petición.

En ssl.conf suelen estar comentadas o con un valor ya establecido.

SSL en Virtual Hosts

Si queremos aplicar SSL a los diferentes Virtual Hosts de nuestro servidor, tendremos que especificar las configuraciones anteriores es el archivo de cada virtualhost

Habría que especificar que el puerto que responde es el 443:

<VirtualHost *:443>
ServerName ejemplo.org
SSLEngine On
SSLCertificateFile /etc/ssl/webserver/apache.pem
SSLCertificateKeyFile /etc/ssl/webserver/apache.key
DocumentRoot /srv/http
ErrorLog /var/log/apache2/error.log
</VirtualHost>
informatica/certificaciones/lpic/lpic-2/208_web_services/208.2_apache_configuration_for_https.txt · Última modificación: por tempwin