Skip to content

Instantly share code, notes, and snippets.

@bigeagle
Created March 5, 2016 15:30
Show Gist options
  • Save bigeagle/74cc509c37c617a8aa29 to your computer and use it in GitHub Desktop.
Save bigeagle/74cc509c37c617a8aa29 to your computer and use it in GitHub Desktop.
Let'sencrypt Auto-Renew
email = admin@example.com
domains = d1.example.com,d2.example.com
webroot-path = /home/wwwroot/letsencrypt
#!/bin/bash
set -e
web_service='nginx'
config_file="/etc/letsencrypt/autorenew.ini"
le_path='/opt/letsencrypt'
exp_limit=30;
if [ ! -f $config_file ]; then
echo "[ERROR] config file does not exist: $config_file"
exit 1;
fi
domain=`grep "^\s*domains" $config_file | sed "s/^\s*domains\s*=\s*//" | sed 's/(\s*)\|,.*$//'`
cert_file="/etc/letsencrypt/live/$domain/fullchain.pem"
if [ ! -f $cert_file ]; then
echo "[ERROR] certificate file not found for domain $domain."
fi
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)
echo "Checking expiration date for $domain..."
if [ "$days_exp" -gt "$exp_limit" ] ; then
echo "The certificate is up to date, no need for renewal ($days_exp days left)."
exit 0;
else
echo "The certificate for $domain is about to expire soon. Starting webroot renewal script..."
$le_path/letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --config $config_file
echo "Reloading $web_service"
/usr/sbin/service $web_service reload
echo "Renewal process finished for domain $domain"
exit 0;
fi
location /.well-known {
root /home/wwwroot/letsencrypt/;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment