¿Cómo implementar el certificado ZeroSSL en Apache y Nginx?

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 escuchado mucho sobre el término como HTTP y HTTPS. En los primeros tiempos se definió un protocolo, que se denominó como Protocolo de transferencia de hipertexto (HTTP). Es una forma de comunicarse desde el navegador al servidor web. Cuando ocurre esta comunicación, los datos viajan en un protocolo HTTP, solo viajan en formatos de texto claro. Debido a esto, se dio cuenta de que la comunicación HTTP no es segura y los piratas informáticos pudieron atacar e interceptar los mensajes importantes y confidenciales.

Para solucionar este problema, el HTTPS El protocolo entró en escena. Es un protocolo seguro, y el acrónimo significa Protocolo de transferencia de hipertexto seguro. Simplemente encripta los datos cuando ocurre la comunicación, y los datos viajan desde el navegador web al servidor web. De modo que si algún hacker recoge esa información, está toda encriptada.

¿Cómo funciona HTTPS?

El protocolo HTTPS funciona en 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). PKI, a su vez, utiliza dos claves, es decir. claves públicas y privadas. Todo lo que se cifra con la clave pública se puede descifrar con la clave privada y viceversa.

Cuando instalamos un certificado SSL/TLS en nuestro sitio web, el ‘cifrado de datos‘ característica se habilita. 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.

Obtener certificado ZeroSSL

ZeroSSL es una autoridad de certificación (CA) que hace que sea muy fácil para todos instalar un certificado para que el sitio web sea seguro. Puede obtener hasta 3 certificados con 90 días de validez de forma gratuita.

Cero SSL

Regístrese con ZeroSSL Después de iniciar sesión, aparecerá la siguiente página. Haga clic en ‘Nuevo Certificado.’

Ingrese la URL que desea proteger y haga clic en ‘Próximo paso.

Seleccione certificado de 90 días y Siguiente

Procedamos con la opción de generación automática de CSR

Continúe con el plan “Gratis”

A continuación, deberá verificar la propiedad del dominio. Hay algunas opciones.

DNS: si puede agregar una entrada de registro de DNS. Correo electrónico: si puede recibir el correo electrónico en [email protected]
Carga de archivo: si puede cargar un archivo en la raíz del dominio

Elija lo que funcione para usted. Procederé con la entrada de DNS.

Agregué el CNAME y estoy listo para verificar el dominio.

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

Aquí están mis certificados descargados.

Es hora de implementarlo.

Implementando en Apache

A continuación, instalaré Apache en Ubuntu.

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

sudo apt-get install apache2

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

[email protected]:~# systemctl status apache2
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: active (running) since Sat 2020-05-23 16:15:56 UTC; 3s ago
  Process: 7852 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
  Process: 14179 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
 Main PID: 14196 (apache2)
    Tasks: 55 (limit: 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[1]: Starting The Apache HTTP Server...
May 23 16:15:56 geekflare-lab apachectl[14179]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'Serve
May 23 16:15:56 geekflare-lab systemd[1]: Started The Apache HTTP Server.

Genial, está funcionando.

Mi dominio (lab.geekflare.com) ya apunta a este servidor Apache.

Pero como puede ver, no está protegido y, por lo tanto, configuraremos el certificado que obtuvimos de ZeroSSL.

Vamos a crear un directorio llamado sslCA en /etc para almacenar los archivos de certificado.

cd /etc
mkdir sslCA

Transfiera los archivos a la carpeta recién creada en el servidor

[email protected]:/etc/sslCA# ll
total 20
drwxr-xr-x  2 root root 4096 May 18 12:13 ./
drwxr-xr-x 92 root root 4096 May 22 06:07 ../
-rw-r--r--  1 root root 2430 May 18 05:37 ca_bundle.crt
-rw-r--r--  1 root root 2292 May 18 05:37 certificate.crt
-rw-r--r--  1 root root 1702 May 18 05:37 private.key
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 Apache SSL.

cd /etc/apache2/mods-available

El nombre del archivo es ssl.conf. Necesitamos agregar lo siguiente en la directiva <VirtualHost _default_:443>         SSLEngine on                 SSLCertificateFile /etc/SSLCA/certificate.crt                 SSLCertificateKeyFile /etc/SSLCA/private.key                 SSLCertificateChainFile /etc/SSLCA/ca_bundle.crt </VirtualHost>

Guarde el archivo y salga :wq!

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

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

Implementando en Nginx

Nginx se encuentra en los repositorios predeterminados 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 sea exitosa, podemos iniciar Nginx usando el siguiente comando.

systemctl start nginx

Verifique el estado de Nginx.

[email protected]:~# 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)
  Process: 8661 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 8653 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 8664 (nginx)
    Tasks: 2 (limit: 2362)
   CGroup: /system.slice/nginx.service
           ├─8664 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─8707 nginx: worker process

May 19 06:54:00 geekflare-lab systemd[1]: Starting A high performance web server and a reverse proxy server...
May 19 06:54:00 geekflare-lab systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
May 19 06:54:00 geekflare-lab systemd[1]: Started A high performance web server and a reverse proxy server.

Como era de esperar, el navegador mostrará la advertencia de que la conexión a este sitio no es segura.

Implementemos rápidamente el certificado para que el sitio sea seguro mediante HTTPS.

Vamos a crear el archivo example.com.conf en la ubicación /etc/nginx/conf.d. El contenido del archivo se verá como el siguiente.

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 agregar un nombre de archivo de certificado en el archivo nginx.conf que se encuentra en el directorio “/etc/nginx”. Agregue 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 aquí vamos.

¿Interesado en aprender Nginx? Echa un vistazo a este curso de fundamentos.

Probar la configuración de SSL/TLS

La configuración predeterminada puede ser vulnerable y le sugiero que pruebe su sitio después de implementar el certificado. Hay una serie de 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 los dos servidores web más populares.

Publicaciones relacionadas

Botón volver arriba