Letsencrypt on your server
Ajourd’hui nous allons apprendre à installer Letsencrypt sur un vps ubuntu avec nginx.
Let’s Encrypt is a new Certificate Authority: It’s free, automated, and open.
Pré-requis
- Serveur Linux (testé Ubuntu 14.04)
- Git installé sur le serveur
- Les droits administrrateur
Step 1 : installatin du client
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help
La dernière ligne de commande va lancer un shell intercatif qui va permettre d’initialiser le compte client en vous demandant une addresse email et l’acceptation des condition générales.
- Documentaion complète ici
Step 2 : création des certificats
A l’heure où j’écris cet article le plugin d’instllation de certificats pour nginx n’est pas encore disponible. Mais une installation manuelle reste relativement simple à faire.
Pour cela, on va utiliser le plugin webroot qui va nous permettre de réaliser très simplement la validation du domaine via un webserver.
Ce que Letsencrypt va faire
- Validation du domaine
- Création des cerificats
Voici la commande à exécuter : certificat multi-domaines
$ ./letsencrypt-auto certonly --webroot -w /var/www/example -d example.com -d m.example.com
NB Pour que la validation du domaine fonctionne, il faudrait qu’un serveur web installé sur la machine tourne à l’adresse example.com avec /var/www/example comme dossier ROOT.
| Option | Description |
|---|---|
| -w /var/www/example | Indique le dossier du serveur web en route sur la machine cible et qui permettra la validatin du domaine. |
| -d example.com | Désign un domaine pour lequel le certificat sera généré. On peur en spécifier autant qu’on souhaite. |
Les certificats sont accessibles à sur la machine sous : /etc/letsencrypt/live/example.com/
Fichiers disponibles : cert.pem, chain.pem, fullchain.pem, privkey.pem
Step 3 : configuration de nginx
Exemple de configuration
server {
listen 80;
server_name example.com;
root /var/www/example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
# For ciphers see https://mozilla.github.io/server-side-tls/ssl-config-generator/
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
# Letsencrypt server validation with application server
# location ~ /.well-known {
# proxy_pass http://localhost:3000;
# }
# Other nginx configs
# ...
}
Links