Configurar Apache2 + SSL ( How To )

Como Documentación personal dejo registro de algo que he hecho en otras oportunidades, pero de lo cual no siempre recuerdo todos los parámetros. 😉

Para quien lea éste artículo, daré solo algunas pautas esenciales para la implementación del protocolo SSL sobre plataformas WEB y el uso de certificados auto firmados.

OBJETIVOS

  • Comprender la utilidad de usar SSL sobre plataformas WEB y conseguir un sitio https
  • Entender cuales son los requisitos para que un sitio web sea reconocido como válido por un browser
  • Comprender como generar y auto firmar un certificado digital.
  • Configurar Clientes y Servidores para un sitio https auto firmado.
  • UTILIDAD DE UN SITIO HTTPS

    Quien no sea muy entendido, podrá desconocer que cuando son insertados datos dentro de formularios de sitios que solamente usan http, estos datos son enviados en texto claro por la red y pueden ser capturados y utilizados de manera maliciosa por cualquiera que tenga acceso a los equipos de comunicaciones por donde pasan estos datos.

    REQUISITOS DE UN SITIO VALIDO

    Para que un sitio sea reconocido como un sitio seguro válido, debe cumplir con 3 condiciones esenciales:

  • Contar con un certificado digital válido firmado por una entidad reconocida
  • El certificado debe ser emitido para el sitio específico.
  • El certificado del sitio debe contar con una fecha válida (los certificados cuentan con fecha de caducidad)
  • CERTIFICADOS AUTO FIRMADOS

    Cuando se utilizan certificados, estos deberían ser firmados por una entidad reconocida ( C A ) como lo es verisign. Los navegadores tienen registrados una gran cantidad de entidades reconocidas dentro de lo que se conoce como Entidades Raiz de Confianza. Cuando un administrador de sistemas decide generar por si mismos los certificados y también firmarlos, se produce una advertencia por parte del navegador, indicando que la entidad emisora que ha firmado el certificado no es de confianza y que puede tratarse de un certificado inválido o un sitio falsificado.

    La manera correcta de habilitar un sitio auto firmado consiste en generar los certificados, firmarlos y hacer que los clientes reconozcan al equipo que los firma como una CA válida dentro de los certificados raíz de confianza

    EMISION Y FIRMA DE CERTIFICADOS

    A continuación la forma de emitir certificados para la CA y un sitio web utilizando Linux, apache2 y openSSL. ( Fuente Original )

    Generando Certificados para la CA.

    En mi caso, voy generar una Entidad Emisora de Certificados Llamada zamoranelson.cl, por lo que he de generar los certificados y llaves correspondientes llenando los datos solicitados por openSSL.

    Creamos un directorio llamado / etc / apache2/ssl y ejecutamos los siguientes comandos.

    openssl genrsa -des3 -out zamoranelson.cl-ca.key 2048

    openssl req -new -x509 -days 3650 -key zamoranelson.cl-ca.key -out zamoranelson.cl-ca.crt

    openssl x509 -in zamoranelson.cl-ca.crt -text -noout

    Con esto ya podemos comenzar a firmar certificados para nuestros sitios web por 10 años mas.

    Ahora firmaré un certificado para mi sitio personal rodrigo.zamoranelson.cl

    openssl genrsa -des3 -out rodrigo.zamoranelson.cl.key 1024

    openssl req -new -key rodrigo.zamoranelson.cl.key -out rodrigo.zamoranelson.cl.csr

    En esta sección, openSSL preguntará lo siguiente:
    Common Name (eg, your name or your server's hostname) []

    Aqui se debe ingresar el dominio exacto del sitio web en el que se usará el certificado, en mi caso, rodrigo.zamoranelson.cl

    openssl x509 -req -in rodrigo.zamoranelson.cl.csr -out rodrigo.zamoranelson.cl.crt -sha1 -CA zamoranelson.cl-ca.crt -CAkey zamoranelson.cl-ca.key -CAcreateserial -days 3650

    openssl x509 -in rodrigo.zamoranelson.cl.crt -text -noout

    En esta sección ya hemos generado y firmado nuestro certificado con la CA zamoranelson.cl para el sitio rodrigo.zamoranelson.cl, el cual será valido también por 10 años.

    CONFIGURACION DE APACHE2

    NameVirtualHost *:443
    <VirtualHost *:443>
    ServerName powers2.cl
    ServerAlias rodrigo.zamoranelson.cl
    CustomLog /var/log/rodrigo.zamoranelson.cl.log full
    DocumentRoot /home/mcbrain
    SSLCertificateFile /etc/apache2/ssl/rodrigo.zamoranelson.cl.crt
    SSLCertificateKeyFile /etc/apache2/ssl/rodrigo.zamoranelson.cl.key
    SSLEngine on
    </VirtualHost>

    Apache en sus configuraciones tiene un parámetro que indica el puerto de escucha, normalmente es el 80, por lo que está definido como Listen 80. En debian está definido dentro del archivo ports.conf, pero en otras distribuciones puede estar en el mismo apache.conf. Para habilitar el puerto 443 tcp, que es el utilizado en https, debemos agregar la linea Listen 443 y ademas escribir el comando a2enmod ssl para activar el soporte SSL

    En este punto, luego de reiniciar apache2 e ingresar la misma contraseña que usamos al generar los certificados, ya deberíamos poder acceder al sitio.

    Cada vez que se inicie el servicio, como en el paso anterior, se solicitará la clave asignada. Esta característica fue diseñada por razones de seguridad, es necesaria ya que la llave RSA privada del archivo server.key se encuentra encriptada con ella, sin embargo es posible removerla bajo consideración del administrador. Para remover esta capa de seguridad se deben ejecutar los pasos siguientes.

    - mv rodrigo.zamoranelson.cl.key rodrigo.zamoranelson.key.old
    - openssl rsa -in rodrigo.zamoranelson.cl.key.old -out rodrigo.zamoranelson.cl.key

    Enter pass phrase for server.key.orig: **************

    Y luego reiniciar apache2.

    Lo normal es que el navegador nos advierta que el certificado ha sido emitido y firmado por una entidad desconocida, para corregir este problema, llevaremos el archivo antes generado zamoranelson.cl-ca.crt a los clientes que accederán al sitio. Los archivos .crt son una extensión reconocida por los principales sistemas operativos como un certificado digital, por lo que es probable que baste con hacer doble click sobre él para instalarlo dentro de los certificados raíz de confianza del equipo para que los navegadores ya no desconozcan el certificado como uno auto firmado inválido.

    Para evitar este paso, se usan certificados firmados por entidades oficiales como verisign, pero esto tiene un costo asociado.

    Subscribe
    Notify of
    guest

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

    0 Comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x
    ()
    x