Comment installer un certificat SSL gratuit avec Let’s Encrypt sur votre serveur Nginx ?

[ad_1]

Let’s Encrypt est une nouvelle autorité de certification qui fournit un moyen facile d’obtenir et d’installer des certificats TLS / SSL gratuits, ce qui permet de crypter les requêtes HTTPS sur vos serveurs Web. Il simplifie le processus en fournissant un logiciel qui s’appelle Certbot et qui tente d’automatiser la plupart des étapes requises. Sachez que Google avec son navigateur Chrome veut mettre en garde tous ses utilisateurs concernant les sites non sécurisés ce qui peut avoir un impact sur votre référencement.

Dans ce tutoriel, je vais vous montrer comment utiliser Let’s Encrypt pour obtenir un certificat SSL gratuit pour Nginx sur Ubuntu 14.04. je vous montrerez également comment renouveler automatiquement votre certificat SSL ( Un certificat Let’s Encrypt n’est valable que 90 jours ! ).

Étape 1 — Installer Certbot

Qu’est-ce que Certbot? Certbot permet d’activer automatiquement le HTTPS sur votre site Web en déployant des certificats Let’s Encrypt. Si vous n’utilisez pas Nginx ou bien Ubuntu 14.04, vous pouvez jeter un œil sur leur site, ils expliquent la procédure à suivre pour chaque système pour générer des certificats SSL avec Let’s Encrypt.

On vas commancer par télécharger Cerbot dans le dossier /usr/local/sbin :

cd /usr/local/sbin
wget https://dl.eff.org/certbot-auto

N’oubliez pas de rendre executable le fichier :

chmod a+x /usr/local/sbin/certbot-auto

Étape 2 — Obtenir un certificat

Pour s’assurer que le répertoire est accessible à Certbot, Modifions rapidement notre configuration Nginx. Par défaut, il se trouve dans /etc/nginx/sites-available/default. Nous utiliserons nano pour l’éditer mais vous êtes libre d’utiliser l’éditeur de votre choix :

nano /etc/nginx/sites-available/default

À l’intérieur du bloc serveur, ajoutez :

server {

    #votre configuration ...

    location ~ /.well-known {
        allow all;
    }

}

Vous aurez besoin du dossier public de votre site. Si vous utilisez le fichier de configuration par défaut, la dossier public sera /usr/share/nginx/html, si vous utilisez Laravel /path/to/public/.
Vérifier qu’il n’y a pas d’erreur.

nginx -t

Si tout va bien, redémarrer Nginx :

service nginx restart

Étape 3 — Configurer TLS/SSL sur le serveur nginx

Maintenant que nous connaissons notre chemin public, nous pouvons utiliser le plugin Webroot pour demander un certificat SSL. Ici, nous spécifions également nos noms de domaine avec l’option -d. Si vous voulez qu’un certificat fonctionne avec plusieurs noms de domaine (par exemple, exemple.com et www.exemple.com), n’oubliez pas de les inclure tous, en commençant par le domaine de plus haut niveau (par exemple, exemple.com). Assurez-vous également que vous remplacez les parties mises en évidence par le chemin webroot approprié et les noms de domaine:

certbot-auto certonly -a webroot --webroot-path=/votre/chemin/public -d exemple.com -d www.exemple.com

Certbot va vous demander plusieurs choses dont votre adresse email qui servira à vous prévenir quand votre certificat va bientôt expirer, nous verrons plus tard ensemble comment le renouveler automatiquement.

Les certificats

Après avoir obtenu le certificat, vous aurez les fichiers suivants:

  • cert.pem: Le certificat de votre domaine
  • chain.pem: Certificat Let’s Encrypt
  • fullchain.pem: cert.pem et chain.pem combiné
  • privkey.pem: Votre certificat clé privé.

Ces fichiers sont placés dans un sous-répertoire /etc/letsencrypt/archive. Toutefois, le client Let’s Encrypt crée des liens symboliques vers les certificats les plus récents dans le répertoire /etc/letsencrypt/live/votre_nom_de_domaine. Étant donné que les liens pointent toujours vers les certificats les plus récents, il s’agit du chemin que vous devez utiliser pour faire référence à votre certificat actuel.

Générer une clé Diffie-Hellman

Pour augmenter encore la sécurité, vous devez également générer une clé Diffie-Hellman à 2048 bits :

openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Cela va prendre quelques minutes mais une fois généré, vous aurez votre fichier DH /etc/ssl/certs/dhparam.pem.

Maintenant que vous avez votre certificat SSL, vous avez besoin de configurer votre serveur Nginx pour pouvoir l’utiliser.
On vas commancer par éditer à nouveau notre bloc serveur :

nano /etc/nginx/sites-available/default

On vas supprimé ( ou mettre en commentaire ) les lignes suivantes qui servent à écouter le port 80 pour les requêtes HTTP, :

#listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;

Pour ensuite écouter le port 443 pour le HTTPS :

listen 443 ssl;

On va ajouter également dans notre bloc serveur, le lien symbolic que nous avons créé et qui fait référence à nos certificats que nous avons généré avec la commande certbot-auto :

ssl_certificate /etc/letsencrypt/live/exemple.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemple.com/privkey.pem;

On va ajouter la configuration SSL par défaut de notre serveur :

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_prefer_server_ciphers on;
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:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000;

Enfin, en dehors de votre bloc serveur principale, ajoutez ce nouveau bloc serveur pour rediriger le HTTP (port 80) vers HTTPS (port 433).

server {
    listen 80;
    listen [::]:80;
    server_name exemple.com www.exemple.com;
    return 301 https://$host$request_uri;
}

Vérifier si il y a des erreurs dans votre configuration :

nginx -t

Puis redémarer votre serveur nginx :

service nginx restart

Étape 4 — Renouvellement automatique de votre certificat

Comme je l’ai dit au début de mon article, les certificats SSL expirent au bout de 90 jours, il faut pour cela le renouveler et si jamais on oublie, on reçoit un email avant que le certificat Le’ts Encrypt n’expire.

Pour le faire renouveller automatiquement, on vas ajouter la commande certbot-auto renew dans les tâches CRON de notre serveur.

30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log
35 2 * * 1 /etc/init.d/nginx reload

Tous les Lundis, à 2h30, on renouvellera notre certificat et à 2h35, on relance notre serveur nginx.

Conclusion

Vous avez votre serveur web avec un certificat SSL reconnue par Let’s Encrypt ! C’est une bonne alternative aux certificats payants. Beaucoup d’hébergeurs comme OVH propose le SSL gratuitement grâce à Let’s Encrypt. C’est intéressant en sachant également que Google pousse petit à petit les sites à passer en HTTPS.

source: digitalocean.com & wikipedia.org

···

[ad_2]

Nouveau Tutoriel

Newsletter

Ne manquez jamais les nouveaux conseils, tutoriels et autres.

Pas de spam, jamais. Nous ne partagerons jamais votre adresse électronique et vous pouvez vous désabonner à tout moment.