Apache2 y SSL/TLS en Debian: ejemplo de configuración
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 para 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:
aptitude install ssl-cert
Ahora habilitamos en Apache el módulo de SSL para poder levantar sitios utilizando SSL:
a2enmod ssl
Creamos el directorio de certificados que utilizaremos en apache:
mkdir /etc/apache2/ssl
Generamos el certificado autofirmado y la clave privada:
/usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
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:
chmod 600 /etc/apache2/ssl/apache.key
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:
<VirtualHost *:443> ServerAdmin info@juncotic.com ServerName juncotic.com ServerAlias www.juncotic.com DocumentRoot /var/www/juncotic.com AccessFileName .htaccess SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem SSLCertificateKeyFile /etc/apache2/ssl/apache.key ErrorLog /var/log/apache2/error_juncotic.com CustomLog /var/log/apache2/access_juncotic.com combined </VirtualHost>
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.
El directorio /var/www/juncotic.com contendrá el contenido html/php del sitio.
Luego reiniciamos el servicio:
systemctl restart apache2.service
Si verificamos los puertos abiertos en nuestro equipo, deberemos ver las entradas para el puerto 80 y el puerto 443 ahora con ssl:
root@alumno:/var/www# ss -npltu tcp LISTEN 0 128 :::443 :::* tcp LISTEN 0 128 :::80 :::*
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:
https://juncotic.com
Y deberemos obtener la salida correcta, como puede verse en la barra de direcciones del navegador:
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!
1 comentario
Apache2 y SSL/TLS en Debian: ejemplo de configuración – Junco TIC – ProyectoTicTac · 5 junio, 2017 a las 16:33
[…] Origen: Apache2 y SSL/TLS en Debian: ejemplo de configuración – Junco TIC […]
Los comentarios están cerrados.