Outils pour utilisateurs

Outils du site


kb:crypto:letsencrypt

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édentesRévision précédente
Prochaine révision
Révision précédente
kb:crypto:letsencrypt [2019/11/28 17:07] – [Génération du certificat] beukb:crypto:letsencrypt [2022/10/14 09:30] (Version actuelle) – [Signature du certificat] beu
Ligne 24: Ligne 24:
  
 <code bash> <code bash>
-# mkdir -p /etc/letsencrypt/wiki.virtit.fr/{live,archive}+# mkdir -p /etc/ssl/custom-certbot/{live,archive}/wiki.virtit.fr
 </code> </code>
  
Ligne 30: Ligne 30:
  
 <code bash> <code bash>
-# openssl ecparam -name prime256v1 -genkey -out /etc/letsencrypt/wiki.virtit.fr/live/private.key+# openssl ecparam -name prime256v1 -genkey -out /etc/ssl/custom-certbot/live/wiki.virtit.fr/privkey.pem
 </code> </code>
  
Ligne 36: Ligne 36:
  
 <code bash> <code bash>
-# openssl req -new -subj "/CN=wiki.virtit.fr" -key /etc/letsencrypt/wiki.virtit.fr/live/private.key -nodes -out /etc/letsencrypt/wiki.virtit.fr/live/cert.csr+# openssl req -new -subj "/CN=wiki.virtit.fr" -key /etc/ssl/custom-certbot/live/wiki.virtit.fr/privkey.pem -nodes -out /etc/ssl/custom-certbot/live/wiki.virtit.fr/csr.pem
 </code> </code>
  
Ligne 46: Ligne 46:
  
 <code bash> <code bash>
-# certbot certonly --webroot -w /var/www/letsencrypt/ -d wiki.virtit.fr --csr /etc/letsencrypt/wiki.virtit.fr/live/cert.csr --cert-path /etc/letsencrypt/wiki.virtit.fr/live/cert.pem --chain-path /etc/letsencrypt/wiki.virtit.fr/live/chain.pem --fullchain-path /etc/letsencrypt/wiki.virtit.fr/live/fullchain.pem+# certbot certonly --webroot -w /var/www/letsencrypt/ -d wiki.virtit.fr --csr /etc/ssl/custom-certbot/live/wiki.virtit.fr/csr.pem --cert-path /etc/ssl/custom-certbot/live/wiki.virtit.fr/cert.pem --chain-path /etc/ssl/custom-certbot/live/wiki.virtit.fr/chain.pem --fullchain-path /etc/ssl/custom-certbot/live/wiki.virtit.fr/fullchain.pem
 </code> </code>
  
 ====Renouvellement du certificat==== ====Renouvellement du certificat====
  
-Pour renouveler le certificat, il faut déplacer le certificat, et les chaines de certificats.\\+Pour renouveler le certificat, j'ai créé un script qui va vérifier la date d'expiration, et renouvelle au besoin.\\
 Je vous conseil d'ajouter la tâche **cron** suivante : Je vous conseil d'ajouter la tâche **cron** suivante :
  
 <code bash> <code bash>
-0 2 * * root /bin/mv /etc/letsencrypt/wiki.virtit.fr/live/*.pem /etc/letsencrypt/wiki.virtit.fr/archive/ && /usr/bin/certbot certonly --webroot -w /var/www/letsencrypt/ -d wiki.virtit.fr --csr /etc/letsencrypt/wiki.virtit.fr/live/cert.csr --cert-path /etc/letsencrypt/wiki.virtit.fr/live/cert.pem --chain-path /etc/letsencrypt/wiki.virtit.fr/live/chain.pem --fullchain-path /etc/letsencrypt/wiki.virtit.fr/live/fullchain.pem+0 2 * * root /opt/renew-cert.sh
 </code> </code>
  
-Il faudra adapter la dite commande avec le bon domaine.+et créer le script suivant :
  
-La fonction post-hook ne fonctionne pas par cette méthode, rajoutez une tache cron quelques minutes plus tard pour reload le serveur Web+<code bash /opt/renew-cert.sh> 
 +#!/usr/bin/env bash 
 + 
 +PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 
 +cd /etc/ssl/custom-certbot/live/ 
 +TEMP=`mktemp -d` 
 +NOW_SECONDS=`date '+%s'
 +NEEDTORELOAD=0 
 + 
 +for i in * ; do 
 + END_DATE=`openssl x509 -dates -noout -in ${i}/cert.pem 2>/dev/null | sed -n 's/ *notAfter=*//p'
 + END_DATE_SECONDS=`date '+%s' --date "$END_DATE"
 + REMAINING_DAYS=`echo "($END_DATE_SECONDS-$NOW_SECONDS)/24/3600" | bc` 
 + if [ "$REMAINING_DAYS" -lt "30" ]; then 
 + NEEDTORELOAD=1 
 + echo "Renewing $i" 
 + mkdir ${TEMP}/${i} 
 + /usr/bin/certbot certonly --webroot -w /var/www/letsencrypt/  -d $i --csr ${i}/csr.pem --cert-path ${TEMP}/${i}/cert.pem --chain-path ${TEMP}/${i}/chain.pem --fullchain-path ${TEMP}/${i}/fullchain.pem 
 + EXITCODE=$? 
 + if [ "$EXITCODE" -eq "0" ]; then 
 + if [ ! -d "/etc/ssl/custom-certbot/archive/${i}" ]; then 
 + mkdir /etc/ssl/custom-certbot/archive/${i} 
 + fi 
 + mv ${i}/cert.pem  /etc/ssl/custom-certbot/archive/${i}/cert.pem 
 + mv ${i}/chain.pem  /etc/ssl/custom-certbot/archive/${i}/chain.pem 
 + mv ${i}/fullchain.pem  /etc/ssl/custom-certbot/archive/${i}/fullchain.pem 
 + mv ${TEMP}/${i}/* ${i}/ 
 + fi 
 + else 
 + if [ -t 1 ] ; then 
 + echo "Nothing to do on $i ($REMAINING_DAYS days left)" 
 + fi 
 + fi 
 + 
 +done 
 + 
 +if [ "$NEEDTORELOAD" -eq "1" ]; then 
 + echo "Reloading services" 
 + systemctl reload nginx 
 +fi 
 +rm -r $TEMP 
 +</code> 
 + 
 +Il faudra le rendre exécutable, et ajouter les commandes nécessaires au rechargement des services dans le script.
kb/crypto/letsencrypt.txt · Dernière modification : 2022/10/14 09:30 de beu