Configurar SSL en Apache HTTPD

    Conceptos

    SSL / TLS (Secure Socket Layer / Transport Layer Security): son protocolos criptográficos que permiten establecer un canal de comunicación segura en Internet: web, correo, fax y mensajería instantánea

    CA (Certificate Authoritative): entidad reconocida a nivel mundial encargada de generar certificados de seguridad para terceros.

    CSR (Certificate Signing Request ): es una solicitud de firmado de certificado a una CA.

    Procedimiento para obtener certificados de seguridad

    • 1. Crear claves públicas y privadas
    • 2. Crear CSR. El CSR debe tener la siguiente información

      • – Código del país (2 letras)
      • – Estado o provincia
      • – Ciudad
      • – Empresa o nombre de la organización
      • – Departamento
      • – Dominio o IP
      • – Correo electrónico
    • 3. Contactar con una CA
    • 4. Enviar el CSR a CA
    • 5. CA devuelve el certificado firmado
    • 6. Configurar el certificado sobre el servicio deseado

    Los paso 3 y 4 pueden omitirse y obtenerse un certificado autofirmado, sin costo alguno, pero obtener un certificado firmado por una CA tiene las siguientes ventajas:

    • – Fuerte nivel de encriptación
    • – La autencidad del certificado es respaldada por una entidad reconocida a nivel mundial
    • – La raíz de los certificados son incluídos en la mayoría de los navegadores
    • – El proceso de conexión segura es transparente al usuario

    Algunas CA

    VeriSign: Es una de las CA lideres a nivel mundial, genera certificados con / hasta 256 bit de encriptación.

    Thawte: Otras de las CA lideres en el mundo, tambien ofrece diferentes tipos de certificados con un nivel de encriptación de hasta 256 bit

    Generar certificado autofirmado

    Generar llave privada
    # openssl genrsa -out ca.key 1024
    
    Generar petición de certificado
    # openssl req -new -key ca.key -out ca.csr
    

    A continuación debemos especificar los datos que nos solicita openssl, se debe prestar especial atención al dato Common Name pues debe coincidir con el dominio o IP a través del cual haremos peticiones seguras si no coincide el certificado no funcionará

    Generar certificado
    # openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt
    
    Mover ficheros a los directorios correspondientes
    # mv -v ca.crt /etc/pki/tls/certs
    # mv -v ca.key /etc/pki/tls/private/
    # mv -v ca.csr /etc/pki/tls/private/
    

    Actualizar configuración del Apache

    Editar httpd.conf
    # vim +/NameVirtualHost  /etc/httpd/conf/httpd.conf
    
    Añadir al httpd.conf
    NameVirtualHost *:443
    
    Editar ssl.conf
    # vim  /etc/httpd/conf/ssl.conf
    
    Actualizar las siguientes directivas
    <VirtualHost *:443>
    SSLCertificateFile /etc/pki/tls/certs/ca.crt
    SSLCertificateKeyFile /etc.pki/tls/private/ca.key
    
    Reiniciar el Apache
    # service httpd graceful
    

    Lecturas recomendadas

    Transport Layer Security




    Dejar un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *