Configurar TLS/SSL en Apache para sitios HTTPS

Author
Por Darío Rivera
Publicado el en Apache

HTTPS (Protocolo de transferencia de hypertexto seguro) es un protocolo principalmente usado en transferencia de datos entre un navegador y un sitio web. La principal ventaja de este protocolo es que la data no viaje en claro sino que viaja encriptada lo que hace casi imposible su identificación mediante sniffers o herramientas de análisis de tráfico de red.

El protocolo utilizado por HTTPS para cifrar la información es denominado TLS (Transport layer security), antiguamente conocido como SSL (Secure sockets layer). Este protocolo asegura la confidencialidad de la información utilizando criptografía asimétrica o de llave pública así como también infraestructura de llave pública.

En este post, verás cómo configurar apache para exponer un certificado TLS en tu sitio web y que pueda ser accedido mediante HTTPS.

Configuración Apache

Lo primero que debes hacer es agregar la siguiente línea para escuchar peticiones por el puerto 443.

Listen 443

Ahora debes habilitar los módulos de apache ssl y socache_shmcb. Esto lo debes hacer en el archivo de configuración de apache http.conf. Si no sabes dónde está localizado este archivo puedes averiguarlo con el siguiente comando.

apachectl -D DUMP_INCLUDES

Seguido a esto debes buscar en caso de que exista un archivo de configuración de ssl o una sección en el archivo principal como la siguiente:

<IfModule ssl_module>
...
</IfModule>

En este caso, deberás agregar una configuración inicial como la isguiente:

SSLRandomSeed startup builtin
SSLRandomSeed connect builtin

SSLSessionCache         shmcb:/var/run/ssl_scache(512000)
SSLSessionCacheTimeout  300

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl

SSLCipherSuite HIGH:!aNULL
SSLProtocol all -SSLv3

Configuración de sitio

Para configurar un sitio con TLS basta realizar la misma configuración que realizas habitualmente con la diferencia que debes agregar el puerto 443 y los paths del certificado y llave privada así:

<VirtualHost *:443>

    SSLEngine on
    SSLCertificateFile "/etc/ssl/ca_evtc/newcerts/C001.pem"
    SSLCertificateKeyFile "/etc/ssl/ca_evtc/keys/C001.pem"

    ...

</VirtualHost>

Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.