18
0
Fork 0
This commit is contained in:
vlaborie 2017-02-02 11:46:14 +01:00
parent d82558dccf
commit d1b033116a
1 changed files with 34 additions and 23 deletions

View File

@ -1,63 +1,60 @@
# Howto LetsEncrypt
---
categories: web security
title: Howto Let's Encrypt
...
Documentation officielle : <https://letsencrypt.org/docs/>
* Documentation : <https://letsencrypt.org/docs/>
* Rôle Ansible : <https://forge.evolix.org/projects/ansible-roles/repository/revisions/unstable/show/evoacme>
Dans tout les cas, il faut un client pour communiquer avec les serveurs de Let's Encrypt et obtenir le certificat. Il en existe plusieurs. L'officiel est <https://certbot.eff.org/>
Let's Encrypt est l'autorité de certification a l'origine du protocole ACME, elle permet l'obtention de certificat SSL gratuit de manière automatisé.
Un client ACME est nécessaire pour communiquer avec les serveurs de Let's Encrypt et obtenir un certificat. Il en existe plusieurs.
## Client officiel (Certbot)
Certbot est disponible en paquet sous Debian à partir des backports de Jessie.
[Certbot](https://certbot.eff.org/) est le client officiel de Let's Encrypt, il est disponible en paquet sous Debian à partir des backports de Jessie.
Pour l'installer, il faut donc être en Debian Jessie avec les backports de configurés, puis :
Pour l'installer sous Jessie, il faut avoir activé les backports, puis :
~~~
# apt install certbot -t jessie-backports
apt install certbot -t jessie-backports
~~~
### Création d'un utilisateur dédié
Afin de ne pas faire tourner certbot avec l'utilisateur root et de ne pas lui donner accès aux clés SSL, nous allons faire tourner certbot avec un utilisateur dédié.
Premièrement, penser à supprimer la tâche cron par défaut de certbot qui est lancé en root :
Premièrement, il faut supprimer la tâche cron par défaut du paquet certbot qui est lance la commande certbot en root :
~~~
rm /etc/cron.d/certbot
~~~
Ensuite créer l'utilisateur dédié à certbot (ici "acme") et corriger les droits en consequences :
Ensuite on crée un utilisateur dédié à certbot (ici "acme") et on corrige les droits en conséquence :
~~~
useradd acme -d /etc/letsencrypt
mkdir /etc/letsencrypt /var/log/letsencrypt /var/lib/letsencrypt
mkdir -p /etc/letsencrypt /var/log/letsencrypt /var/lib/letsencrypt
chmod 755 /etc/letsencrypt /var/log/letsencrypt /var/lib/letsencrypt
chown acme: /etc/letsencrypt /var/log/letsencrypt /var/lib/letsencrypt
~~~
Puis ajouter la commande de renouvellement dans la crontab de l'utilisateur acme :
~~~
# On ouvre la crontab de acme
crontab -u acme -e
# Et on rajoute la ligne suivante
0 0,12 * * * certbot renew -q
~~~
### Configuration du Serveur Web
#### Apache
Créer le fichier dans /etc/apache2/conf-available/letsencrypt.conf avec :
Créer le fichier /etc/apache2/conf-available/letsencrypt.conf avec :
~~~
SetEnvIf Request_URI "/.well-known/acme-challenge/*" no-jk
Alias /.well-known/acme-challenge /var/lib/letsencrypt/.well-known/acme-challenge
<Directory "/var/lib/letsencrypt/.well-known/acme-challenge">
Options -Indexes
AllowOverride all
Allow from all
Require all granted
</Directory>
~~~
Puis activer ce fichier :
~~~
@ -66,6 +63,20 @@ apache2ctl -t
service apache2 reload
~~~
#### Nginx
Créer le fichier /etc/nginx/letsencrypt.conf :
~~~
location /.well-known/acme-challenge {
alias /var/lib/letsencrypt/.well-known/acme-challenge;
try_files $uri =404;
allow all;
}
~~~
Il faudra ensuite inclure ce fichier dans chaque vhost utilisant Let's Encrypt.
### Génération du certificat
Générér une clé SSL dans /etc/ssl/private et un CSR (voir [HowtoSSL](http://wiki.evolix.org/HowtoSSL)) :
@ -74,7 +85,7 @@ Générér une clé SSL dans /etc/ssl/private et un CSR (voir [HowtoSSL](http://
openssl req -newkey rsa:2048 -sha256 -nodes -keyout /etc/ssl/private/ma-cle.ssl -out mon-csr.csr
~~~
Faire la demande de certificat (avec l'utilisateur acme, le csr doit être accesible en lecture à cet utilisateur) :
Faire la demande de certificat (avec l'utilisateur acme, le csr doit être accessible en lecture à cet utilisateur) :
~~~
sudo -u acme certbot certonly --webroot --csr mon-csr.csr --webroot-path /var/lib/letsencrypt -n --agree-tos --cert-path=/etc/letsencrypt/mon-cert.crt --fullchain-path=/etc/letsencrypt/mon-cert-fullchain.pem --chain-path=/etc/letsencrypt/mon-cert-chain.pem email@example.com
@ -84,5 +95,5 @@ Votre certificat est maintenant présent dans /etc/letsencrypt/mon-cert.crt !
## Automatisation
Pour simplifier l'installation et la configuration de certbot ainsi que la génération de CSR et de certificat, Evolix a créé le projet [Evoacme](https://forge.evolix.org/projects/ansible-roles/repository/show/evoacme?utf8=%E2%9C%93&rev=stable).
Pour simplifier l'installation et la configuration de Certbot ainsi que la génération de CSR et de certificat, Evolix a créé le projet [Evoacme](https://forge.evolix.org/projects/ansible-roles/repository/revisions/unstable/show/evoacme).