Búsqueda de sitios web

Cómo crear un certificado SSL autofirmado local en CentOS 8


SSL (Secure Socket Layer), y su versión mejorada, TLS (Transport Socket Layer), son protocolos de seguridad que se utilizan para proteger el tráfico web enviado desde el navegador web de un cliente a un servidor web.

Un certificado SSL es un certificado digital que crea un canal seguro entre el navegador de un cliente y un servidor web. Al hacerlo, se cifran datos sensibles y confidenciales, como datos de tarjetas de crédito, credenciales de inicio de sesión y otra información altamente privada, lo que evita que los piratas informáticos escuchen y roben su información.

¿Qué es un certificado SSL autofirmado?

Un certificado SSL autofirmado, a diferencia de otros certificados SSL firmados y de confianza por una Autoridad certificadora (CA), es un certificado firmado por un individuo que lo posee.

Crear uno es totalmente gratuito y es una forma económica de cifrar su servidor web alojado localmente. Sin embargo, se desaconseja el uso de un certificado SSL autofirmado en entornos de producción por los siguientes motivos:

  1. Dado que no está firmado por una Autoridad de certificación, un certificado SSL autofirmado genera alertas en los navegadores web que advierten a los usuarios sobre riesgos potenciales en caso de que decidan continuar. Estas alertas no son deseadas y disuadirán a los usuarios de visitar su sitio web, lo que podría provocar una disminución del tráfico web. Como solución alternativa a estas alertas, las organizaciones suelen animar a sus empleados a simplemente ignorarlas y seguir adelante. Esto puede generar un hábito peligroso entre los usuarios que pueden decidir seguir ignorando estas alertas en otros sitios en línea, potencialmente siendo víctimas de sitios de phishing.
  2. Los certificados autofirmados tienen un nivel de seguridad bajo ya que implementan tecnologías de cifrado y hashes de bajo nivel. Por lo tanto, es posible que el nivel de seguridad no esté a la par de las políticas de seguridad estándar.
  3. Además, no hay soporte para las funciones de infraestructura de clave pública (PKI).

Dicho esto, el uso de un certificado SSL autofirmado no es una mala idea para probar servicios y aplicaciones en una máquina local que requiere cifrado TLS/SSL.

En esta guía, aprenderá cómo instalar un certificado SSL local autofirmado en el servidor web Apache localhost en un sistema de servidor CentOS 8.

Requisitos previos:

Antes de comenzar, asegúrese de tener los siguientes requisitos básicos:

  1. Una instancia del servidor CentOS 8.
  2. Servidor web Apache instalado en el servidor
  3. Un nombre de host ya configurado y definido en el archivo /etc/hosts. Para esta guía, usaremos tecmint.local como nombre de host para nuestro servidor.

Paso 1: instalar Mod_SSL en CentOS

1. Para comenzar, debe verificar que el servidor web Apache esté instalado y ejecutándose.

sudo systemctl status httpd

Aquí está el resultado esperado.

Si el servidor web no se está ejecutando, puede iniciarlo y habilitarlo al iniciar usando el comando.

sudo systemctl start httpd
sudo systemctl enable httpd

A continuación podrá confirmar si Apache está en funcionamiento.

2. Para habilitar la instalación y configuración del certificado SSL autofirmado local, se requiere el paquete mod_ssl.

sudo dnf install mod_ssl

Una vez instalado, puede verificar su instalación ejecutando.

sudo rpm -q mod_ssl

Además, asegúrese de que el paquete OpenSSL esté instalado (OpenSSL viene instalado de forma predeterminada en CentOS 8).

sudo rpm -q openssl 

Paso 2: cree un certificado SSL autofirmado local para Apache

3. Con el servidor web Apache y todos los requisitos previos verificados, debe crear un directorio dentro del cual se almacenarán las claves criptográficas.

En este ejemplo, hemos creado un directorio en /etc/ssl/private.

sudo mkdir -p /etc/ssl/private

Ahora cree la clave del certificado SSL local y el archivo usando el comando:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout tecmint.local.key -out tecmint.local.crt

Echemos un vistazo a lo que realmente significan algunas de las opciones del comando:

  • req -x509: esto indica que estamos utilizando la Solicitud de firma de certificado (CSR) x509.
  • -nodes: esta opción indica a OpenSSL que omita el cifrado del certificado SSL mediante una frase de contraseña. La idea aquí es permitir que Apache pueda leer el archivo sin ningún tipo de intervención del usuario, lo que no sería posible si se proporciona una frase de contraseña.
  • -newkey rsa:2048 – Esto indica que queremos crear simultáneamente una nueva clave y un nuevo certificado. La parte rsa:2048 implica que queremos crear una clave RSA de 2048 bits.
  • -keyout: esta opción especifica dónde almacenar el archivo de clave privada generado al momento de su creación.
  • -out: la opción especifica dónde colocar el certificado SSL creado.

Paso 3: Instale el certificado SSL autofirmado local en Apache

4. Habiendo generado el archivo del certificado SSL, ahora es el momento de instalar el certificado usando la configuración del servidor web Apache. Abra y edite el archivo de configuración /etc/httpd/conf.d/ssl.conf.

sudo vi /etc/httpd/conf.d/ssl.conf

Asegúrese de tener las siguientes líneas entre las etiquetas del host virtual.

<VirtualHost *:443>
    ServerAdmin [email 
    ServerName www.tecmint.local
    ServerAlias tecmint.local
 
    DocumentRoot /var/www/html
 
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/tecmint.local.crt
    SSLCertificateKeyFile /etc/ssl/private/tecmint.local.key
</VirtualHost>

Guardar y salir del archivo. Para que los cambios se realicen, reinicie Apache usando el comando:

sudo systemctl restart httpd

5. Para que usuarios externos accedan a su servidor, debe abrir el puerto 443 a través del firewall como se muestra.

sudo firewall-cmd --add-port=443 --zone=public --permanent
sudo firewall-cmd --reload

Paso 3: Prueba del certificado SSL autofirmado local en Apache

Con todas las configuraciones implementadas, inicie su navegador y busque la dirección de su servidor usando la dirección IP o el nombre de dominio del servidor usando el protocolo https.

Para agilizar las pruebas, puede considerar redirigir el protocolo HTTP a HTTPS en el servidor web Apache. Esto es para que cada vez que navegue por el dominio en HTTP simple, será redirigido automáticamente al protocolo HTTPS.

Así que navega por el dominio o IP de tu servidor

https://domain_name/

Recibirá una alerta informándole que la conexión no es segura como se muestra. Esto variará de un navegador a otro. Como puede imaginar, la alerta se debe a que el certificado SSL no está firmado por la Autoridad certificadora y el navegador lo registra e informa que no se puede confiar en el certificado.

Para acceder a su sitio web, haga clic en la pestaña "Avanzado" como se muestra arriba:

A continuación, agregue la excepción al navegador.

Finalmente, recarga tu navegador y observa que ahora puedes acceder al servidor, aunque habrá una advertencia en la barra de URL de que el sitio no es completamente seguro por la misma razón que el certificado SSL está autofirmado y no firmado por el Autoridad certificada.

Esperamos que ahora pueda continuar y crear e instalar un certificado SSL autofirmado en el servidor web Apache localhost en CentOS 8.