wiki/HowtoLetsEncrypt.md

98 lines
3.2 KiB
Markdown
Raw Normal View History

2017-02-02 11:46:14 +01:00
---
categories: web security
title: Howto Let's Encrypt
...
2016-12-29 11:25:39 +01:00
2017-02-02 11:46:14 +01:00
* Documentation : <https://letsencrypt.org/docs/>
* Rôle Ansible : <https://forge.evolix.org/projects/ansible-roles/repository/revisions/unstable/show/evoacme>
2016-12-29 11:25:39 +01:00
2017-02-02 11:46:14 +01:00
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.
2016-12-29 11:25:39 +01:00
## Client officiel (Certbot)
2017-02-02 11:46:14 +01:00
[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.
2016-12-29 11:25:39 +01:00
2017-02-02 11:46:14 +01:00
Pour l'installer sous Jessie, il faut avoir activé les backports, puis :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-02-02 11:46:14 +01:00
apt install certbot -t jessie-backports
2016-12-29 11:25:39 +01:00
~~~
### 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é.
2017-02-02 11:46:14 +01:00
Premièrement, il faut supprimer la tâche cron par défaut du paquet certbot qui est lance la commande certbot en root :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
rm /etc/cron.d/certbot
~~~
2017-02-02 11:46:14 +01:00
Ensuite on crée un utilisateur dédié à certbot (ici "acme") et on corrige les droits en conséquence :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
useradd acme -d /etc/letsencrypt
install -m 755 -o acme -g acme -d /etc/letsencrypt /var/log/letsencrypt /var/lib/letsencrypt
2016-12-29 11:25:39 +01:00
~~~
### Configuration du Serveur Web
#### Apache
2017-02-02 11:46:14 +01:00
Créer le fichier /etc/apache2/conf-available/letsencrypt.conf avec :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
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
2017-02-02 11:46:14 +01:00
Allow from all
2016-12-29 11:25:39 +01:00
Require all granted
</Directory>
~~~
2017-02-02 11:46:14 +01:00
2016-12-29 11:25:39 +01:00
Puis activer ce fichier :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
ln -s /etc/apache2/conf-available/letsencrypt.conf /etc/apache2/conf-enabled/letsencrypt.conf
apache2ctl -t
service apache2 reload
~~~
2017-02-02 11:46:14 +01:00
#### 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.
2016-12-29 11:25:39 +01:00
### Génération du certificat
2017-01-24 23:04:56 +01:00
Générér une clé SSL dans /etc/ssl/private et un CSR (voir [HowtoSSL](http://wiki.evolix.org/HowtoSSL)) :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
openssl req -newkey rsa:2048 -sha256 -nodes -keyout /etc/ssl/private/ma-cle.ssl -out mon-csr.csr
~~~
2017-02-02 11:46:14 +01:00
Faire la demande de certificat (avec l'utilisateur acme, le csr doit être accessible en lecture à cet utilisateur) :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
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
~~~
Votre certificat est maintenant présent dans /etc/letsencrypt/mon-cert.crt !
## Automatisation
2017-02-02 11:46:14 +01:00
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).
2016-12-29 11:25:39 +01:00