Outils pour utilisateurs

Outils du site


securite:renouvellement_automatique_de_certificat_let_s_encrypt

Ceci est une ancienne révision du document !


Renouvellement automatique de certificat Let's Encrypt

  • Installer Let's Encrypt:
cd /root
apt-get install git
git clone https://github.com/letsencrypt/letsencrypt
  • Créer le script /usr/local/sbin/renew-cert:
renew-cert
#!/bin/bash
 
DOMAINE_PRINCIPAL="mondomaine.fr"
DOMAINES_NON_HTTP="imap.mondomaine.fr"
 
MAIL="master@mondomaine.fr"
 
LETSENCRYPT=/root/letsencrypt
ARGS="certonly --standalone --renew --server https://acme-v01.api.letsencrypt.org/directory -t"
 
AGEMAX=60
 
##############################################################################################
 
age=$(($(date +%s)-$(date -r /etc/nginx/privkey.pem +%s)))
age=$((${age}/86400))
 
echo -n "* Certificat renouvelé il y a ${age} jours => renouvellement "
if [ ${age} -ge ${AGEMAX} ] ; then
        echo "nécessaire"
else
        if [ "${1}" = "-f" ] ; then
                echo "forcé"
        else
                echo "pas nécessaire"
                exit 0
        fi
fi
echo
 
domaines=$(cat /etc/nginx/sites-enabled/frontal |grep server_name |egrep -v "^#|~|localhost" |awk '{print $2}' |sed 's/;//g' |grep -v "
domaines="${DOMAINE_PRINCIPAL} ${DOMAINES_NON_HTTP} ${domaines}"
domaines=$(echo ${domaines})
domaines=$(echo ${domaines} |sed 's/ / -d /g ; s/^/-d /g')
 
args="${ARGS} -m ${MAIL} ${domaines}"
 
service nginx stop
 
cd ${LETSENCRYPT}
echo "* Commande à exécuter:"
echo "./letsencrypt-auto ${args}"
echo
./letsencrypt-auto ${args}
 
rep=$(ls -l --time-style long-iso /etc/letsencrypt/live/*/cert.pem |awk '{print $6" "$7" "$8}' |sort |tail -1 |cut -d"/" -f5)
echo -n "* Certificat le plus récent: /etc/letsencrypt/live/${rep} => "
 
i=0
diff /etc/letsencrypt/live/${rep}/privkey.pem /etc/nginx/privkey.pem > /dev/null || (( i++ ))
diff /etc/letsencrypt/live/${rep}/fullchain.pem /etc/nginx/fullchain.pem > /dev/null || (( i++ ))
 
if [ ${i} -eq 2 ] ; then
        echo "renouvelé"
 
        echo "* Installation certificat pour Nginx"
        cp /etc/letsencrypt/live/${rep}/fullchain.pem /etc/nginx/
        cp /etc/letsencrypt/live/${rep}/privkey.pem /etc/nginx/
 
        #echo "* Installation certificat pour ???"
        #scp -q /etc/letsencrypt/live/${rep}/*.pem ???:/etc/ssl
 
else
        echo "PAS renouvelé"
fi
 
service nginx start
  • Planifier le renouvellement de certificat:
chmod +x /usr/local/sbin/renew-cert
ln -s /usr/local/sbin/renew-cert /etc/cron.daily
securite/renouvellement_automatique_de_certificat_let_s_encrypt.1451754829.txt.gz · Dernière modification: 02/01/2016 par laurent