El conocimiento es el nuevo dinero.
Aprender es la nueva manera en la que inviertes
Acceso Cursos

Generando certificados SSL TOTALMENTE GRATIS

🔥 Esta publicación asume que tienes conocimientos previos de despliegues en servidores o vps.

· 3 min de lectura
Generando certificados SSL TOTALMENTE GRATIS

Que lo de arriba no te asuste, aunque las configuraciones siempre han sido dolores de cabeza, (esta no es la excepción), es algo que no podemos evitar en nuestro día a dia.

Por eso me he dado la tarea de explicarte como generar certificados ssl y domios TOTALMENTE GRATIS!!!

😳🤨🤔

En este momento eres uno de 2 tipos de lectores en tecnología, los qué vienen en busca del código que alivia su dolor de cabeza como cualquier analgésico y aquellos que profundizan más en busca de las letras pequeñas que pueda contener este post.

Para cualquier quiera que seas, este post es para ti 😉

Basta de cháchara, hasta yo me aburro, vamos al código!

Lo siento olvide mencionar que es duckdns y a nuestro amigo leal y funcional LetsEncrypt

Como no es la idea hacer de este post algo extenso te dejaré 2 artículos que hacen de la definición algo imposible de no leer:

Duck DNS. Una dirección fija para tu IP dinámica.

Let’s Encrypt

# instala nginx en tu sistema si no lo tienes

sudo apt install nginx
sudo snap install core; sudo snap refresh core
# remueve las viejas versiones de certbot (si tienes)
sudo apt remove certbot
sudo snap install --classic certbot
# este es un link simbolico a los binarios del sistema
sudo ln -s /snap/bin/certbot /usr/bin/certbot

crea tu cuenta en Duck

y genera tu dominio el tuyo deberia ser de tu propio gusto, tipea tu dominio en la barra superior que aparece en la imagen de abajo :

Hasta acá ya tenemos:

  • [x]  Dominio gratis.
  • [x]  nginx y certbot en nuestro sistema.

Ahora si, configuremos nuestro sitio disponible en nginx.

# nano /etc/nginx/sites-available/<your-domain>.duckdns.org

server {
    listen 80;
    server_name <your-domain-here>.duckdns.org;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name <your-domain-here>.duckdns.org;

    ssl_certificate /etc/letsencrypt/live/<your-domain-here>.duckdns.org/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/<your-domain-here>.duckdns.org/privkey.pem;

    location = /favicon.ico {
        access_log off;
        log_not_found off;
    }

    location / {
        proxy_pass http://localhost:<your-port-app>;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Crea un link simbolico a los sitios habilitados.

ln -s /etc/nginx/sites-available/<your-domain>.duckdns.org /etc/nginx/sites-enabled/

Sitios disponibles: son nuestros dominios o configuraciones de sitios que posteriormente deben permanecer como sitios habilitados, eso lo hacemos a travez de links simbolicos del sistema (accesos directos) asi todos nuestros cambios se bindean directamente.

como nginx es un servicio debemos reiniciar tras cada cambio que hacemos pero aún no dado que sin generar los certificados nos daria error.

para corroborar nuestros cambios y sintaxis nginx debemos tipear sudo nginx -t

En esta fase debemos permitir el trafico en nuestro firewal interno (ufw)

si tu sistema no tiene ufw instalalo: sudo apt install ufw

sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'

sudo ufw status

Consigue tu token duck dns antes de continuar, arriba te dejo la referencia donde encontrarlo.

Necesitas el plugin de duckdns para confirmar los certificados

Instala, edita tu email, token y dominio duckdns y luego corre el comando de abajo.

certbot certonly \
  --non-interactive \
  --agree-tos \
  --email <your-email> \
  --preferred-challenges dns \
  --authenticator dns-duckdns \
  --dns-duckdns-token <your-token-duckdns> \
  --dns-duckdns-propagation-seconds 60 \
  -d "<your-domain>.duckdns.org"

Tu dominio deberia verse asi de lindo como el mio <3

Reinicia tu nginx sudo systemctl restart nginx

Si llegaste hasta acá, en hora buena ya contamos con dominos ssl TOTALMENTE GRATIS!

Comprueba la propagación de tu domino con herramientas como: dnschecker

REFERENCIAS:

Fuente 1

Fuente 2

Fuente 3

Fuente 4

Artículos Relacionados

Mejora tu VSCODE (PRODUCTIVDAD)
· 5 min de lectura