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/03/17 22:14] beukb:crypto:letsencrypt [2022/10/14 09:30] (Version actuelle) – [Signature du certificat] beu
Ligne 18: Ligne 18:
 Cette méthode n'est pas éligible au renouvellement automatique de certbot, donc il faudra ajouter manuellement l'entrée en tache cron. La méthodologie, si suivie a la lettre, permet un gestion simple de ces certificats. Cette méthode n'est pas éligible au renouvellement automatique de certbot, donc il faudra ajouter manuellement l'entrée en tache cron. La méthodologie, si suivie a la lettre, permet un gestion simple de ces certificats.
  
-====Prérequis==== 
- 
-FIXME 
  
 ====Génération du certificat==== ====Génération du certificat====
Ligne 26: 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 44: 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 * * /bin/rm /etc/letsencrypt/wiki.virtit.fr/archive/* || true && /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 --post-hook '/bin/systemctl reload apache2'+0 2 * * * root /opt/renew-cert.sh 
 +</code> 
 + 
 +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> </code>
  
-Il faudra adapter la dite commande avec le bon domaine et les bons post-hook.+Il faudra le rendre exécutable, et ajouter les commandes nécessaires au rechargement des services dans le script.
kb/crypto/letsencrypt.1521324850.txt.gz · Dernière modification : 2018/03/17 22:14 de beu