Created
August 10, 2025 15:56
-
-
Save dalthonmh/0d8a7fbfbe2f19f93862d97dba878efa to your computer and use it in GitHub Desktop.
Genera SSL para un subdominio con certbot
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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