En el siguiente tutorial, vamos a generar un certificado para poder navegar de forma segura por HTTPS, sin embargo, existen ciertas limitaciones debido a que será auto-firmado. Cuando queremos navegar de forma cifrada se produce la siguiente estructura de comunicación:
1- Un servidor tiene una clave privada.
2- Le envía la clave pública al cliente, dentro de un certificado (esta clave la usaremos para enviar una clave simétrica que creará el cliente).
3- El cliente se tiene que asegurar que este certificado (clave pública, nombre y demás información) es quien realmente dice ser, por ello una organización certificadora (CA) la tiene que firmar.
4- Hasta aquí todo bien, ¿pero quien asegura que esta CA es quien dice ser? De nuevo, la CA debe estar firmado por otra CA.
5- Finalmente lo que queremos es llegar a una CA la cual nuestro navegador se fíe y nos permita navegar sin mensajes de advertencia.
6- Los navegadores incluyen certificados auto-instalados, estas empresas de navegadores (Mozilla, Microsoft, etc) cobran de las CA para tener los certificados instalados por defecto, por ello, en nuestro caso, al ser auto-firmado, no viene por defecto en el navegador, y debemos aceptar la advertencia e instalar-lo manualmente.
7- Si deseamos evitar este mensaje y que nuestros clientes pierdan la confianza al ver la advertencia del navegador, deberemos pagar a una entidad certificadora.
A continuación, veremos los pasos para crear un certificado auto-firmado totalmente gratuito en un Sistema Operativo CentOS.
Instalamos los paquetes necesarios:
Una vez instalado, y antes de proceder a crear las claves y certificado, debemos asegurarnos que estos ficheros iran a un lugar seguro donde solo tiene acceso el usuario root y el usuario de apache. Normalmente dentro de los directorios ‘/etc/httpd/’ encontramos estos requisitos cumplidos.
Procedemos a introducir los comandos:
Paso 1: Crear una clave privada y cifrada de 2048 bits:
Paso 2: Creamos una solicitud de firma para el certificado (.csr) En este paso nos pedirá información sobre la empresa, nombre, localidad, etc.
Paso 3: En este paso estamos generando el certificado auto-firmado con una validez de 1 año.
Una vez hecho esto debemos introducir ciertos datos dentro del archivo /etc/httpd/conf.d/ssl.conf
Reiniciamos el servicio Apache y probamos a entrar en nuestra web con: ‘https://dominioweb’ y nos debería saltar un aviso en el navegador, añadimos nuestro sitio web a lugares de confianza (en opciones avanzadas) y ya estaremos navegando de forma seguro y cifrada.
Cabe recordar que para un mejor funcionamiento y confianza con nuestros clientes, es muy recomendable obtener un certificado de una entidad certificadora, puesto que el certificado auto-firmado puede generar desconfianza al usuario final, puesto que el navegador avisará que nuestro sitio web no es fiable.