Last active
April 2, 2018 13:29
-
-
Save victoraguilarc/58e9556582389afe419819f91d2c4073 to your computer and use it in GitHub Desktop.
Bash para agregar a un cronjob para renovar los certificados let'sencrypt
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 | |
# Basado en | |
# https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04 | |
# Agrega este script como cron job: | |
# sudo crontab -e | |
# 30 2 1-15 * 6 /path/to/script/le-renews.sh >> /opt/letsencrypt/le-renews.log | |
# Esto se ejcuta los primeros sabados de cada mes a las 2:30am | |
# sudo service cron restart | |
# Configuración | |
email="[email protected]"; | |
domains="xiberty.com"; # List de dominios separados por comas | |
exp_limit=30; | |
web_service="nginx"; | |
# Root required | |
if [[ $EUID -ne 0 ]]; then | |
echo "Setup - Este script debe ejecutarse como usuario root"; | |
exit 0; | |
fi; | |
# Obtiene el certificado solo para el primer dominio de la lista | |
domain=`echo $domains | sed 's/,.*//'`; | |
cert_file="/etc/letsencrypt/live/$domain/fullchain.pem"; | |
if [ ! -f $cert_file ]; then | |
echo "[ERROR] certificado no encontrado para el dominio: $domain."; | |
exit 0; | |
fi; | |
# Revisar la fecha | |
exp=$(date -d "`openssl x509 -in $cert_file -text -noout|grep "Not After"|cut -c 25-`" +%s) | |
datenow=$(date -d "now" +%s) | |
days_exp=$(echo \( $exp - $datenow \) / 86400 |bc) | |
if [ "$days_exp" -gt "$exp_limit" ] ; then | |
echo "El certificado esta actualizado, no necesita ser renovado ($days_exp dias restantes)."; | |
exit 0; | |
fi; | |
# Actualizar el certificado | |
echo "El certificado para [$domain] esta cerca de expirar. Ejecutando el script de renovación..." | |
certbot renew --pre-hook "service $web_service stop" --post-hook "service $web_service start" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment