Outils pour utilisateurs

Outils du site


securite:renouvellement_automatique_de_certificat_let_s_encrypt

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
securite:renouvellement_automatique_de_certificat_let_s_encrypt [02/01/2016]
laurent
securite:renouvellement_automatique_de_certificat_let_s_encrypt [25/11/2016] (Version actuelle)
laurent
Ligne 1: Ligne 1:
-====== Renouvellement automatique de certificat Let's Encrypt ======+====== Renouvellement automatique de certificat Let's Encrypt ​(pour Nginx) ​======
  
-  ​* Installer Let's Encrypt:+===== Introduction ===== 
 + 
 +  * //​Let'​s Encrypt// est un service de PKI gratuit 
 +  * Les certificats //​Let'​s Encrypt// sont reconnus par les navigateurs 
 +  * Un certificat //​Let'​s Encrypt// peut contenir plusieurs //​hostnames//​ 
 +  * La validation des certificats est automatisée grâce au protocole ACME 
 +  * Nous utiliserons l'​implémentation <<​certbot>>​ 
 +  * Le script est prévu pour le serveur web //Nginx// 
 +  * Lien => https://​certbot.eff.org/​ 
 + 
 +===== Installation ===== 
 + 
 +  ​* Installer ​//Let's Encrypt//:
 <​code>​ <​code>​
 cd /root cd /root
-apt-get install git +wget https://dl.eff.org/certbot-auto 
-git clone https://github.com/letsencrypt/letsencrypt+chmod +x certbot-auto 
 +./certbot-auto
 </​code>​ </​code>​
-  * Créer le script **/​usr/​local/​sbin/​renew-cert**:​ 
-<code bash renew-cert>​ 
-#!/bin/bash 
  
-DOMAINE_PRINCIPAL="​mondomaine.fr"​ +  * Installer le script de renouvellement de certificat: 
-DOMAINES_NON_HTTP="imap.mondomaine.fr"+<​code>​ 
 +wget -O /​usr/​local/​sbin/​renew-cert-letsencrypt ​"https://www.ilard.fr/​dokuwiki/​doku.php?​do=export_code&​id=public:​renouvellement_automatique_de_certificat_let_s_encrypt&​codeblock=2" 
 +chmod +x /​usr/​local/​sbin/​renew-cert-letsencrypt 
 +</​code>​
  
-MAIL="​master@mondomaine.fr"​+<code bash /​usr/​local/​sbin/​renew-cert-letsencrypt>​ 
 +#!/bin/bash
  
-LETSENCRYPT=/​root/​letsencrypt +##############################################################################################​
-ARGS="​certonly --standalone --renew --server https://​acme-v01.api.letsencrypt.org/​directory -t" +
- +
-AGEMAX=60+
  
 +. /​usr/​local/​etc/​renew-cert-letsencrypt.cf || exit 1
 + 
 ##############################################################################################​ ##############################################################################################​
  
 +ARGS=$(echo ${ARGS})
 +
 +# Récupérer l'âge du certificat
 age=$(($(date +%s)-$(date -r /​etc/​nginx/​privkey.pem +%s))) age=$(($(date +%s)-$(date -r /​etc/​nginx/​privkey.pem +%s)))
 age=$((${age}/​86400)) age=$((${age}/​86400))
Ligne 39: Ligne 55:
 echo echo
  
-domaines=$(cat /​etc/​nginx/​sites-enabled/​frontal |grep server_name |egrep -v "​^#​|~|localhost"​ |awk '{print $2}' |sed '​s/;//​g'​ |grep -v " +cd ${REP
-domaines="​${DOMAINE_PRINCIPAL} ${DOMAINES_NON_HTTP} ${domaines}"​ +echo -"* Commande à exécuter:​\n\n${PROG} ${ARGS}\n"
-domaines=$(echo ${domaines}) +
-domaines=$(echo ${domaines} |sed 's/ / -d /g ; s/^/-d /g') +
- +
-args="${ARGS-m ${MAIL} ${domaines}"+
  
 service nginx stop service nginx stop
  
-cd ${LETSENCRYPT} +${PROG} ${ARGS}
-echo "* Commande à exécuter:"​ +
-echo "​./​letsencrypt-auto ​${args}"+
 echo 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)+# Récupérer le nom du dossier qui contient le certificat le plus récent 
 +rep=$(ls -l --time-style long-iso /​etc/​letsencrypt/​live/​*/​privkey.pem |awk '​{print $6" "​$7"​ "​$8}'​ |sort |tail -1 |cut -d"/"​ -f5)
 echo -n "* Certificat le plus récent: /​etc/​letsencrypt/​live/​${rep} => " echo -n "* Certificat le plus récent: /​etc/​letsencrypt/​live/​${rep} => "
  
-i=0 +# Comparer le certificat le plus récent et le certificat installé 
-diff /​etc/​letsencrypt/​live/​${rep}/​privkey.pem /​etc/​nginx/​privkey.pem > /​dev/​null ​|| (( i++ )) +diff /​etc/​letsencrypt/​live/​${rep}/​privkey.pem /​etc/​nginx/​privkey.pem > /dev/null
-diff /​etc/​letsencrypt/​live/​${rep}/​fullchain.pem /​etc/​nginx/​fullchain.pem > /dev/null || (( i++ ))+
  
-if [ ${i} -eq ] ; then+if [ $-eq ] ; then
         echo "​renouvelé"​         echo "​renouvelé"​
  
Ligne 68: Ligne 77:
         cp /​etc/​letsencrypt/​live/​${rep}/​privkey.pem /etc/nginx/         cp /​etc/​letsencrypt/​live/​${rep}/​privkey.pem /etc/nginx/
  
-        ​#echo "* Installation certificat pour ???" +        ​if [ -/usr/local/etc/certs-letsencrypt_post_ok.sh ] ; then 
-        #scp -/etc/letsencrypt/live/${rep}/*.pem ???:/etc/ssl+                . /usr/local/etc/certs-letsencrypt_post_ok.sh 
 +        fi      ​
  
 else else
Ligne 76: Ligne 86:
  
 service nginx start service nginx start
 +echo
 </​code>​ </​code>​
-  ​* Planifier le renouvellement de certificat:+ 
 +===== Configuration ===== 
 + 
 +  * Installer et éditer le fichier de configuration:​ 
 +<​code>​ 
 +wget -O /​usr/​local/​etc/​renew-cert-letsencrypt.cf "​https://​www.ilard.fr/​dokuwiki/​doku.php?​do=export_code&​id=public:​renouvellement_automatique_de_certificat_let_s_encrypt&​codeblock=4"​ 
 +</​code>​ 
 + 
 +<code bash /​usr/​local/​etc/​renew-cert-letsencrypt.cf>​ 
 +AGEMAX=60 
 + 
 +REP=/root 
 +PROG="​./​certbot-auto"​ 
 + 
 +ARGS="​ 
 +certonly 
 + ​--renew-by-default 
 + ​--standalone 
 + ​--rsa-key-size 4096 
 + -m contact@mondomaine.fr 
 + -t 
 + -d mondomaine.fr 
 + -d autredomaine.net 
 + -d www.mondomaine.fr 
 + -d mail.mondomaine.fr 
 + -d www.autredomaine.net 
 +
 +</​code>​ 
 + 
 +  * **Facultatif** => installer et éditer le script à exécuter **après** un renouvellement réussi de certificat:​ 
 +<​code>​ 
 +wget -O /​usr/​local/​etc/​renew-cert-letsencrypt_post_ok.sh "​https://​www.ilard.fr/​dokuwiki/​doku.php?​do=export_code&​id=public:​renouvellement_automatique_de_certificat_let_s_encrypt&​codeblock=6"​ 
 +</​code>​ 
 + 
 +<code bash /​usr/​local/​etc/​renew-cert-letsencrypt_post_ok.sh>​ 
 +echo "* Installation certificat pour Cyrus-Imap et Postfix"​ 
 +scp -q /​etc/​letsencrypt/​live/​${rep}/​*.pem 192.168.50.123:/​etc/​ssl 
 +ssh 192.168.50.123 '​service cyrus-imapd restart ; service postfix restart'​ 
 +</​code>​ 
 + 
 +  ​* Planifier le renouvellement dans //CRON//: 
 +<​code>​ 
 +ln -s /​usr/​local/​sbin/​renew-cert-letsencrypt /​etc/​cron.daily 
 +</​code>​ 
 + 
 +  * Forcer la création / renouvellement de certificat:
 <​code>​ <​code>​
-chmod +x /​usr/​local/​sbin/​renew-cert +renew-cert-letsencrypt ​-f
-ln -s /​usr/​local/​sbin/​renew-cert /​etc/​cron.daily+
 </​code>​ </​code>​
  
securite/renouvellement_automatique_de_certificat_let_s_encrypt.1451754829.txt.gz · Dernière modification: 02/01/2016 par laurent