Skip to content

Instantly share code, notes, and snippets.

@dalthonmh
Created August 10, 2025 15:56
Show Gist options
  • Save dalthonmh/0d8a7fbfbe2f19f93862d97dba878efa to your computer and use it in GitHub Desktop.
Save dalthonmh/0d8a7fbfbe2f19f93862d97dba878efa to your computer and use it in GitHub Desktop.
Genera SSL para un subdominio con certbot
#!/bin/bash
# genera.sslsubdominio.sh
# Genera SSL para un subdominio con certbot
# Requiere que Nginx esté instalado y configurado
# Creado por: [email protected]
# Fecha: 10/08/2025
# Variables
SUBDOMINIO="$1"
DOMINIO="$2"
PORT="$3"
FULL_DOMAIN="$SUBDOMINIO.$DOMINIO"
# Validar parámetros
if [ -z "$SUBDOMINIO" ] || [ -z "$DOMINIO" ] || [ -z "$PORT" ]; then
echo "Faltan parámetros al script."
echo "Uso: $0 subdominio dominio puerto"
echo "Ejemplo: $0 backend.catastro beledev.com 83"
exit 1
fi
# Generar archivo de configuración de Nginx
echo "👉 Generando archivo en /etc/nginx/sites-available"
cat << 'EOF' > /etc/nginx/sites-available/$FULL_DOMAIN
server {
listen 80;
server_name __FULL_DOMAIN__;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name __FULL_DOMAIN__;
location / {
proxy_pass http://localhost:__PORT__;
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;
}
ssl_certificate /etc/letsencrypt/live/__DOMINIO__/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/__DOMINIO__/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
EOF
# Reemplazar variables en el archivo
sed -i "s|__PORT__|$PORT|g" /etc/nginx/sites-available/$FULL_DOMAIN
sed -i "s|__FULL_DOMAIN__|$FULL_DOMAIN|g" /etc/nginx/sites-available/$FULL_DOMAIN
sed -i "s|__DOMINIO__|$DOMINIO|g" /etc/nginx/sites-available/$FULL_DOMAIN
# Habilitar enlaces simbolicos
echo "👉 Habilitando enlaces simbólicos"
sudo ln -sf /etc/nginx/sites-available/$FULL_DOMAIN /etc/nginx/sites-enabled/
# Verificar la configuración de Nginx
echo "👉 Verificando la configuración de Nginx"
sudo nginx -t
if [ $? -eq 0 ]; then
echo "[OK] Configuración de Nginx correcta, recargando..."
sudo systemctl reload nginx
else
echo "[ERROR] Error en configuración de Nginx"
exit 1
fi
echo "👉 Solicitando certificado SSL para $FULL_DOMAIN"
sudo certbot --nginx -d $FULL_DOMAIN
echo "👉 Reiniciando Nginx"
sudo systemctl restart nginx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment