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 [2018/04/07 00:28] beukb:crypto:letsencrypt [2022/10/14 09:30] (Version actuelle) – [Signature du certificat] beu
Ligne 23: Ligne 23:
 Pour chaque domaines, nous allons créer les dossiers où seront stocké les certificats et les clés: Pour chaque domaines, nous allons créer les dossiers où seront stocké les certificats et les clés:
  
-<code> +<code bash
-# mkdir -p /etc/letsencrypt/wiki.virtit.fr/live +# mkdir -p /etc/ssl/custom-certbot/{live,archive}/wiki.virtit.fr
-# mkdir -p /etc/letsencrypt/wiki.virtit.fr/archive+
 </code> </code>
  
-puis on génère le certificat :+puis on génère la clé privé:
  
-<code> +<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
-# openssl req -new -key /etc/letsencrypt/wiki.virtit.fr/live/private.key -nodes -days 3650 -out /etc/letsencrypt/wiki.virtit.fr/live/cert.csr+
 </code> </code>
  
-Ces certificats seront unique mais pensez à les renouveler régulièrement :-).+Puis le certificat publique  
 + 
 +<code bash> 
 +# 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> 
 + 
 +Ces certificats seront unique mais pensez à les renouveler de temps en temps :-).
  
 ====Signature du certificat==== ====Signature du certificat====
Ligne 41: Ligne 45:
 Pour signer votre certificat, il faut lancer la commande suivante : Pour signer votre certificat, il faut lancer la commande suivante :
  
-<code> +<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> +<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 : 
 + 
 +<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>
  
-La fonction post-hook ne fonctionne pas par cette méthoderajoutez une tache cron quelques minutes plus tard pour reload le serveur Web+Il faudra le rendre exécutableet ajouter les commandes nécessaires au rechargement des services dans le script.
kb/crypto/letsencrypt.1523060912.txt.gz · Dernière modification : 2018/04/07 00:28 de beu