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 par a utilizar en nuestro Apache. Unas usando OpenSSL directamente, otras mediante algunas utilidades de frontend.
a 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.