To bit or not to bit, ingeniera en desarrollo de software, criadora de mantis, mujer transgénera
Ingeniería de software

Configurar Servidor Apache 2.4 para https en Windows

Soy de la idea de que todo servidor web productivo debe de usar un encriptación, aunque sea para el más insignificante servicio, por lo mismo decidí hacer esta documentación. Creo que la mayor parte de esta guía puede funcionar para ambientes Linux, sólo hay que buscar las rutas/paths donde se encuentran las librerías o ejecutables.

¿Que es HTTPS?

HTTPS es el acrónimo para HyperText Transfer Protocol Secure, este hace uso de cifrados basados en certificados SSL, y funciona sobre el puerto 443, es una versión mejorada de HTTP que busca transferencias más seguras.

Certificados SSL

Para la transferencia HTTPS usamos los archivos crt y key, los archivos der y pem son llaves publicas o privadas para identificar el formato que puede tener nuestro archivo cert o pem, es decir nuestro archivo cert puede en vez de tener extensión cert tener extensión pem, también el archivo key .

Archivo crt

Un archivo crt, cert o cer comúnmente le llamamos llave pública, es el archivo certificado usualmente de tipo x509, pero además de contener la llave, lleva la firma de la entidad certificadora, usualmente está en formato PEM que es texto, pero también se usa en formato DER que es binario.

Archivo key

El archivo key lo conocemos como la llave privada, usualmente está en formato PEM que es texto, pero también se usa en formato DER que es binario.

Archivo csr

Certificate Signing Request es el archivo que se genera con los valores de país, ciudad, localidad, nombre de organización etc. Este archivo lo necesita un CA o entidad certificadora para generar las llaves SSL.

Generación de llaves con openssl

Ya que sabemos para que son los archivos SSL vamos a nver como generarlos, para eso necesitamos el ejecutable openssl que esta en el {home}/bin de nuestra instalación de Apache 2.4, buscamos ejecutar con la siguiente linea:

C:\maria>"C:/Apache24/bin/openssl" req -x509 -sha256 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -nodes

Configuración en Apache

En el archivo httpd.conf buscaremos la línea

#LoadModule ssl_module modules/mod_ssl.so

Y la descomentaremos quitando el signo de numero (#) para indicar que usaremos certificados SSL.

También buscaremos la línea:

#Include conf/extra/httpd-vhosts.conf

Y la descomentaremos para indicar que vamos a usar el archivo.

A continuación escribimos en el archivo de virtual hosts, la siguiente información:

Listen 443

<VirtualHost *:80>
    DocumentRoot "C:\Apache24\htdocs-default"
    ServerName ip.ip.ip.ip
</VirtualHost>

<VirtualHost *:443>
    DocumentRoot "C:\Apache24\htdocs-secure"
    ServerName ip.ip.ip.ip
    SSLEngine on
    SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
    SSLCertificateFile "C:\Apache24\ubicacion_archivo.crt"
    SSLCertificateKeyFile "C:\Apache24\ubicacion_archivo.key"
</VirtualHost>

Reiniciar el servidor y probar.

Conclusiones

Esta es una guía rápida para configurar un servidor Apache, espero sea de utilidad.

Como siempre si les gusta compartan y si no también. Cualquier comentario pueden buscarme en mi Twitter @SoyTabs que reviso constantemente.