Apache2 y SSL/TLS en Debian: ejemplo de configuración

Publicado por Diego Córdoba en

En este articulo aprenderemos a montar un sitio seguro SSL/TLS con certificados digitales utilizando el servidor web Apache2 en Debian.


Instalando las utilidades

Existen varias formas de generar certificados digitales parhttps http apache debian ssl tlsa utilizar en nuestro Apache. Unas usando OpenSSL directamente, otras mediante algunas utilidades de frontend.

En este caso utilizaremos ssl-cert. En otro artículo hablaremos de herramientas automatizadas como letsencrypt para generación de certificados firmados.

Lo primero debemos instalar una utilidad de ssl necesaria para la generación de los certificados digitales:

Ahora habilitamos en Apache el módulo de SSL para poder levantar sitios utilizando SSL:

Creamos el directorio de certificados que utilizaremos en apache:

Generamos el certificado autofirmado y la clave privada:

Al tratarse de un certificado autofirmado, el cliente recibirá una advertencia sobre violación de seguridad, puesto que su navegador desconoce la autoridad certificante.

Si nuestro servidor va a ser publico, necesitaremos generar nuestro certificado y firmarlo mediante una autoridad certificante conocida, o utilizar gratuitamente sistemas como letsencrypt.

Separamos ahora clave y certificado en dos archivos distintos, ya que el archivo apache2.pem generado contiene los dos. Supongamos que le dejamos el nombre apache.pem al certificado, y apache.key a la clave privada del servidor.

Cambiamos los permisos de la clave privada, esto es para evitar que nuestra clave se vea comprometida:

Configuramos el virtualhost en Apache2

Configuramos nuestro virtual-host para que haga uso ahora de SSL, notar el puerto 443 en el que recibirá las consultas:

Los campos están configurados de ejemplo, se deberán actualizar para que permitan funcionar en cada sitio particular. En este clase, el ejemplo es para juncotic.com y www.juncotic.com.https http apache debian ssl tls

El directorio /var/www/juncotic.com contendrá el contenido html/php del sitio.

Luego reiniciamos el servicio:

Si verificamos los puertos abiertos en nuestro equipo, deberemos ver las entradas para el puerto 80 y el puerto 443 ahora con ssl:

Si hemos configurado correctamente los DNS’s, o en su defecto, el archivo /etc/hosts de nuestro cliente, de modo que el dominio en cuestión, en este caso, juncotic.com, apunte a la dirección IP de nuestro servidor, podremos acceder desde el browser:

Y deberemos obtener la salida correcta, como puede verse en la barra de direcciones del navegador:

apache2 apache ssl debian tls


En un artículo posterior, como comenté arriba, hablaremos de letsencrypt, un excelente mecanismo para poder crear y configurar, de forma automatizada, certificados digitales firmados por una autoridad certificante válida, para nuestros servicios en Internet.

¡Espero les resulte útil! ¡Hasta la próxima!


Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador