Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Apache HTTP , Nginx y Seguridad Última actualización: 24 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Veamos cómo obtener un certificado SSL/TLS GRATUITO de ZeroSSL e implementarlo en los servidores web Apache y Nginx

Introducción

Es posible que haya oído hablar mucho de términos como HTTP y HTTPS. En los primeros tiempos, se definió un protocolo que se denominó Protocolo de transferencia de hipertexto (HTTP). Se trata de una forma de comunicación entre el navegador y el servidor web. Cuando se produce esta comunicación, los datos que viajan en un protocolo HTTP, sólo viajan en los formatos de texto claro. Debido a esto, se ha constatado que la comunicación HTTP no es segura, y los hackers han podido atacar e interceptar los mensajes importantes y sensibles

Para solucionar este problema, apareció el protocolo HTTPS. Se trata de un protocolo seguro, cuyas siglas significan HyperText Transfer Protocol Secure. Simplemente realiza la encriptación de los datos cuando se produce la comunicación, y los datos viajan desde el navegador web hasta el servidor web. De modo que si algún pirata informático capta esa información, todo queda encriptado

¿Cómo funciona HTTPS?

El protocolo HTTPS funciona con cualquiera de las dos cosas, es decir SSL(Secure Socket Layer) o TLS(Transport Layer Security). Ambas herramientas utilizan PKI(Infraestructura de Clave Pública). La PKI, a su vez, utiliza dos claves, es decir, la pública y la privada. Cualquier cosa que se cifre utilizando la clave pública puede descifrarse utilizando la clave privada y viceversa

Cuando instalamos un certificado SSL/TLS en nuestro sitio web, se activa la función de “cifrado de datos“. SSL se utiliza como punto de control para garantizar la seguridad de los datos que se intercambian a través de Internet entre el navegador del usuario y el servidor del sitio web

Obtención del certificado ZeroSSL

ZeroSSL es una autoridad de certificación (CA) que facilita a todo el mundo la instalación de un certificado para hacer seguro el sitio web. Puede obtener hasta 3 certificados con 90 días de validez de forma gratuita

Zero SSL

  • Registrarse en ZeroSSL
  • Después de iniciar sesión, aparecerá la siguiente página. Haga clic en “Nuevo certificado”

  • Introduzca la URL que desea proteger y haga clic en ‘Siguiente paso

  • Seleccione certificado de 90 días y Siguiente

  • Procedamos con la opción de autogenerar CSR

  • Procedamos con el plan “Gratuito

A continuación, tendrá que verificar la titularidad del dominio. Existen varias opciones

  • DNS – si puede añadir una entrada de registro DNS
  • Correo electrónico – si puede recibir el correo electrónico a admin@yourdomain.com
  • Carga de archivos – si puede cargar un archivo en la raíz del dominio

Elija lo que funcione para usted. Voy a proceder con la entrada DNS

  • He añadido el CNAME y listo para verificar el dominio.

  • Finalmente, una vez verificado, el certificado SSL está listo para descargar.

Aquí está mi certificado descargado

Es hora de implementarlo

Implementación en Apache

A continuación instalaré Apache en Ubuntu

Inicie sesión en el servidor e instale utilizando el comando apt-get

sudo apt-get install apache2

Averigüemos si Apache se está ejecutando utilizando el comando systemctl

root@geekflare-lab:~# systemctl status apache2
● apache2.service - El servidor HTTP Apache
 Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
 Drop-In: /lib/systemd/system/apache2.service.d
 └─apache2-systemd.conf
 Activo: activo (en ejecución) desde Sat 2020-05-23 16:15:56 UTC; hace 3s
 Proceso: 7852 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
 Proceso: 14179 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 PID principal: 14196 (apache2)
 Tareas: 55 (límite: 2362)
 CGroup: /system.slice/apache2.service
 ├─14196 /usr/sbin/apache2 -k start
 ├─14199 /usr/sbin/apache2 -k start
 └─14200 /usr/sbin/apache2 -k start

May 23 16:15:56 geekflare-lab systemd<x><x><x><x>[1]</x></x></x></x>: Iniciando el servidor HTTP Apache...
May 23 16:15:56 geekflare-lab apachectl[14179]: AH00558: apache2: No se ha podido determinar de forma fiable el nombre de dominio completo del servidor, utilizando 127.0.1.1. Establezca el 'Servir
May 23 16:15:56 geekflare-lab systemd<x><x><x><x>[1]</x></x></x></x>: Iniciado el servidor HTTP Apache

Genial, está funcionando

Mi dominio (lab.geekflare.com) ya está apuntando a este servidor Apache

Pero como puede ver, no está asegurado, y por lo tanto, vamos a configurar el certificado que obtuvimos de ZeroSSL

  • Vamos a crear un directorio llamado sslCA bajo /etc para almacenar los archivos del certificado.
cd /etc

mkdir

sslCA
  • Transfiera los archivos a la carpeta recién creada en el servidor
root@geekflare-lab:/etc/sslCA# ll
total 20
drwxr-xr-x 2 root 4096 18 de mayo 12:13 ./
drwxr-xr-x 92 root 4096 22 de mayo 06:07 ../

-rw-r–r– 1 root

2430 May 18 05:37 ca_bundle.crt

-rw-r–r–

1 root 2292 May 18 05:37 certificate.crt

-rw-r–r–

1 root 1702 May 18 05:37 private.key
  • Habilitar módulo SSL
sudo a2enmod SSL
  • Tendremos que reiniciar el servidor web para que se reconozcan los cambios.

sudo

service apache2 restart
  • El siguiente paso es configurar los archivos de certificado en el archivo de configuración SSL de Apache.
cd /etc/apache2/mods-available
  • El nombre del archivo es ssl.conf. Tenemos que añadir lo siguiente en la directiva <VirtualHost>.
<VirtualHost _default_:443>
SSLEngine activado
SSLCertificateFile /etc/SSLCA/certificate.crt
SSLCertificateKeyFile /etc/SSLCA/private.key
SSLCertificateChainFile /etc/SSLCA/ca_bundle.crt
</VirtualHost&gt
  • ¡Guarde el archivo y salga :wq!

Después de realizar el reinicio, el SSL se habilitará en el sitio. Accedamos al sitio utilizando https://

Y, como puede ver, “La conexión es segura”. Significa que nuestro certificado SSL se ha aplicado correctamente a nuestro servidor web

Implementación en Nginx

Nginx se encuentra en los repositorios por defecto de Ubuntu, por lo que es posible instalarlo desde aquí utilizando el sistema de empaquetado adecuado

  • El siguiente comando se utiliza para instalar el “Nginx“.
sudo apt install nginx
  • Después de que la instalación tenga éxito, podemos iniciar el Nginx utilizando el comando de abajo.
systemctl start nginx
  • Compruebe el estado de Nginx.
root@geekflare-lab:~# systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
 Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
 Active: active (running) since Tue 2020-05-19 06:54:00 UTC; 4 days ago
 Docs: man:nginx(8)
 Process: 8634 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
 Proceso: 8661 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Proceso: 8653 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 PID principal: 8664 (nginx)
 Tareas: 2 (límite: 2362)
 CGroup: /system.slice/nginx.service
 ├─8664 nginx: proceso maestro /usr/sbin/nginx -g daemon on; master_process on;
 └─8707 nginx: proceso trabajador

May 19 06:54:00 geekflare-lab systemd<x><x><x><x>[1]</x></x></x></x>: Iniciando un servidor web de alto rendimiento y un servidor proxy inverso...
May 19 06:54:00 geekflare-lab systemd[1<x><x><x><x>]</x></x></x></x>: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
May 19 06:54:00 geekflare-lab systemd<x><x><x><x>[</x></x></x></x>1]: Iniciado Un servidor web de alto rendimiento y un servidor proxy inverso
  • Como era de esperar, el navegador mostrará la advertencia de que la conexión a este sitio no es segura.

Implementemos rápidamente el cert para que el sitio sea seguro utilizando HTTPS

  • Creemos el archivo example.com.conf en la ubicación /etc/nginx/conf.d. El contenido del archivo tendrá el siguiente aspecto.
server {
listen 443 SSL default_server;
listen [::]:443 SSL default_server ;
server_name lab.geekflare.com lab.geekflare.com;
root /var/www/html;

}

  • Ahora es necesario añadir un nombre de archivo de certificado en el archivo nginx.conf que se encuentra en el directorio “/etc/nginx“.
  • Añada lo siguiente en la directiva http
ssl_certificate /etc/sslCA/certificate.crt;

ssl_certificate_key

/etc/sslCA/private.

key

  • Reinicie Nginx para verificar los cambios
systemctl restart nginx

Y ya está

¿Está interesado en aprender Nginx? Eche un vistazo a este curso de fundamentos

Probando la configuración SSL/TLS

La configuración por defecto puede ser vulnerable, y le sugiero encarecidamente que pruebe su sitio después de implementar el certificado. Hay varias herramientas en línea que puede consultar aquí

Conclusión

Espero que esto le dé una idea de cómo obtener un certificado de ZeroSSL e implementarlo en dos de los servidores web más populares.

  • Asad Ali
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre Apache HTTP
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder