kb:crypto:letsencrypt
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
kb:crypto:letsencrypt [2018/03/06 20:08] – beu | kb:crypto:letsencrypt [2022/10/14 09:30] (Version actuelle) – [Signature du certificat] beu | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
======Let' | ======Let' | ||
- | ====Introduction==== | + | ====Comprendre Let's Encrypt==== |
+ | |||
+ | Let's Encrypt est un Autorité de Certification qui est **GRATUITE** et qui permet de signer un certificat de façon automatique et quasi instantané. | ||
+ | |||
+ | Deux méthodes existent pour valider un certificat :\\ | ||
+ | - Par requête HTTP : Lors de la demande de certificat, l'API va effectuer une requête HTTP sur la dites URL dans le répertoire /// | ||
+ | - Par requêtes DNS : Lors de la requête, l'API fera une requête TXT particulière sur le DNS. Celle-ci n'est soit pas automatique ou elle oblige que le serveur WEB puissent mettre à jour sa zone DNS. Bien que plus contraignante, | ||
+ | |||
+ | ====Pourquoi cette méthode==== | ||
L' | L' | ||
- | Cette méthode n'est pas la plus simple, mais elle permet de mettre en place [[kb: | + | Cette méthode n'est pas la plus simple, mais elle permet de mettre en place [[kb: |
Pour cela, il faut juste le packet certbot/ | Pour cela, il faut juste le packet certbot/ | ||
Ligne 10: | Ligne 18: | ||
Cette méthode n'est pas éligible au renouvellement automatique de certbot, donc il faudra ajouter manuellement l' | Cette méthode n'est pas éligible au renouvellement automatique de certbot, donc il faudra ajouter manuellement l' | ||
- | ====Génération | + | |
+ | ====Génération | ||
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: | ||
- | < | + | < |
- | # mkdir -p /etc/letsencrypt/wiki.virtit.fr/live | + | # mkdir -p /etc/ssl/custom-certbot/{live,archive}/ |
- | # mkdir -p / | + | |
</ | </ | ||
- | puis on génère | + | puis on génère |
- | < | + | < |
- | # openssl ecparam -name prime256v1 -genkey -out /etc/letsencrypt/wiki.virtit.fr/live/ | + | # openssl ecparam -name prime256v1 -genkey -out /etc/ssl/custom-certbot/ |
- | # openssl req -new -key virtit.pem -nodes -days 3650 -out / | + | |
</ | </ | ||
- | Ces certificats seront unique mais pensez à les renouveler régulièrement :). | + | Puis le certificat publique |
- | ---- | + | <code bash> |
- | ====Installation de Let's Encrypt==== | + | # openssl req -new -subj "/ |
+ | </ | ||
- | Il faudra installer certbot qui est dans les dépôts backports | + | Ces certificats seront unique mais pensez à les renouveler de temps en temps :-). |
- | < | + | ====Signature du certificat==== |
- | # apt install letsencrypt | + | |
- | </ | + | |
- | ====Création d' | + | Pour signer votre certificat, il faut lancer la commande suivante : |
- | il faudra stopper NginX, Apache ou toutes les applications utilisant le port 80 ou 443 | + | < |
- | < | + | # certbot certonly --webroot -w / |
- | # service apache2 stop | + | |
</ | </ | ||
- | Création du certificat | ||
- | < | ||
- | # letsencrypt certonly --rsa-key-size 4096 -d wiki.virtit.fr | ||
- | </ | ||
- | puis suivre les indications. | ||
- | | ||
- | ====Renouvellement | + | ====Renouvellement |
- | il faudra stopper NginX, Apache ou toutes les applications utilisant le port 80 ou 443 | + | Pour renouveler le certificat, j'ai créé un script qui va vérifier la date d' |
- | < | + | Je vous conseil d' |
- | # service apache2 stop | + | |
- | </code> | + | < |
- | Puis il suffira de lancer | + | 0 2 * * * root /opt/renew-cert.sh |
- | < | + | |
- | # letsencrypt | + | |
</ | </ | ||
- | ====Problèmes rencontrés==== | ||
- | En cas de Reverse Proxy, Il faudra un peu plus s' | + | et créer |
+ | |||
+ | <code bash / | ||
+ | # | ||
+ | |||
+ | PATH="/ | ||
+ | cd / | ||
+ | TEMP=`mktemp -d` | ||
+ | NOW_SECONDS=`date ' | ||
+ | NEEDTORELOAD=0 | ||
+ | |||
+ | for i in * ; do | ||
+ | END_DATE=`openssl x509 -dates -noout -in ${i}/ | ||
+ | END_DATE_SECONDS=`date ' | ||
+ | REMAINING_DAYS=`echo "($END_DATE_SECONDS-$NOW_SECONDS)/ | ||
+ | if [ " | ||
+ | NEEDTORELOAD=1 | ||
+ | echo " | ||
+ | mkdir ${TEMP}/ | ||
+ | / | ||
+ | EXITCODE=$? | ||
+ | if [ " | ||
+ | if [ ! -d "/ | ||
+ | mkdir / | ||
+ | fi | ||
+ | mv ${i}/ | ||
+ | mv ${i}/ | ||
+ | mv ${i}/ | ||
+ | mv ${TEMP}/ | ||
+ | fi | ||
+ | else | ||
+ | if [ -t 1 ] ; then | ||
+ | echo " | ||
+ | fi | ||
+ | fi | ||
+ | |||
+ | done | ||
+ | |||
+ | if [ " | ||
+ | echo " | ||
+ | systemctl reload nginx | ||
+ | fi | ||
+ | rm -r $TEMP | ||
+ | </ | ||
- | Il faudra | + | Il faudra |
kb/crypto/letsencrypt.1520366910.txt.gz · Dernière modification : 2018/03/06 20:08 de beu