/ SSL CERTIFICAT

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

  1. Validation du domaine
  2. 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