Juste un petit script pour le renouvellement automatique que j'avais écrit en 2015 sur une machine Ubuntu server.
DANE, on ne sait pas c'est pour quand. Donc on repart avec let's encrypt.
#!/bin/bash
#
# Renouvellement automatique de let's encrypt
#
# On essaye de renouveler 10 jours avant l'expiration
#
DAYSTORENEW=10
DAYSTOALERT=5
LETSENCRYPT="/usr/local/bin/letsencrypt/letsencrypt-auto"
RELOADAPACHE="apache2ctl graceful"
#[ -x $LETSENCRYPT ] || echo "Le script $LETSENCRYPT a disparu" && exit 1
[ -x $LETSENCRYPT ] || exit 1
if [ $# -ne 1 ]; then
echo "Usage: $LETSENCRYPT <domainname>"
exit 1
fi
# Send notifications to
EMAIL=support@yerbynet.com
# Read the domain name
DOMAIN=$1
CERTFILE="/etc/letsencrypt/live/$DOMAIN/cert.pem"
DOCROOT=`grep DocumentRoot /etc/apache2/sites-enabled/*$DOMAIN* | grep -v ssl | cut -d '"' -f 2`
if [ ! $DOCROOT ]; then
echo "Vhost inexistant ou apache mal configuré"
exit 1
fi
if [ -e /etc/letsencrypt/live/$DOMAIN ]; then
DATE1=$(openssl x509 -in $CERTFILE -text -noout | grep "Not After" | cut -c 25-)
SEC1=`date -d "$DATE1" +%s`
DAYS1=`expr $SEC1 / 86400`
DAYS2=`expr $(date +%s) / 86400`
DAYS=$(echo "$DAYS1 - $DAYS2" | bc)
if [ $DAYS -ge $DAYSTORENEW ]; then
exit 0
fi
# Else, try to renew
$LETSENCRYPT certonly --webroot -w $DOCROOT --renew-by-default -d $DOMAIN --email $EMAIL --agree-tos
#$LETSENCRYPT -certonly -webroot -w $DOCROOT --renewbydefat -d $DOMAIN --email $EMAIL --agree-tos
if [ $? -ne 0 -a $DAYS -le $DAYSTOALERT ]; then
#echo "Can't renew ssl certificate for $DOMAIN"
echo "Renouvellement impossible du certificat pour $DOMAIN" | mail -s "SSL pour $DOMAIN" $EMAIL
else
$RELOADAPACHE
echo "Renouvellement de SSL pour $DOMAIN : OK" | mail -s "SSL pour $DOMAIN" $EMAIL
fi
else
echo "Generating a new cert for $DOMAIN"
$LETSENCRYPT certonly --webroot -w $DOCROOT --renew-by-default -d $DOMAIN --email $EMAIL --agree-tos
fi
L'information,
n'est-elle pas précieuse ? Partageons la tous ensemble !
© Août 2017
Roger YERBANGA
www.yerbynet.com