Let’s encrypt c’est quoi ?
Let’s Encrypt est une autorité de certification fournissant des certificats gratuits X.509 pour le protocole TLS.
Le projet vise à généraliser l’usage de connexions sécurisées sur l’internet et de réduire de manière significative la complexité de la mise en place et de la maintenance du chiffrement TLS.
A propos de CertBot
Certbot est un client pour Let’s Encrypt. Il récupère et déploie automatiquement les certificats SSL/TLS sur votre serveur web.
CertBot fonctionne également avec toutes autres CA qui prennent en charge le protocole ACME.
Configuration d’Apache
Vous devez au préalable configurer le site qui devra obtenir un certificat dans Apache. Ce dernier doit posséder un enregistrement DNS valide pour être accessible via son adresse http.
Note : Il semblerait que Let’s Encrypt ne liste pas les sites possédant déjà un vhost en https
Générer un certificat Let’encrypt (Debian Wheezy)
Installation
Allez, par exemple, dans votre répertoire personnel et créez un clone avec la commande git
# git clone https //github.com/letsencrypt/letsencrypt |
Se positionner ensuite dans le répertoire nouvellement créé.
# cd letsencrypt/ |
Création de certificat
Lancer le script pour créer les certificats
# ./certbot-auto |
Une interface vous demandera ensuite de choisir les sites qui nécessiteront un certificat. Ici on choisi uniquement monSite.fr.
(note : il est possible d’en sélectionner plusieurs pour tout faire en une seule fois, il semblerait cependant qu’il ne soit pas possible de choisir le nom de son certificat, ainsi le certificat peut s’appeler ftp.monsite.com au lieu de monsite.com. Ce n’est en rien gênant pour son bon fonctionnement, cependant si vous souhaitez que le certificat adopte le même nom que votre nom de domaine je vous conseille de faire une première demande avec le nom de domaine et d’ensuite étendre le certificat avec les sous-domaines.)
Si c’est la 1ère utilisation on vous demandera votre email afin de recevoir les notifications d’expiration de vos certificats pour les renouveler. Il faut également accepter les conditions d’utilisations.
Il est possible en une seule manipulation de de tout faire d’un seul coup.
Si c’est une première utilisation
# ./certbot-auto --apache -d example1.com -d www.example2.com -d example3.com –-email votreEmail –-agree-tos |
Si vous avez déjà inscrit une adresse mail et accepter les CGU
# ./certbot-auto --apache -d example1.com -d www.example2.com -d example3.com |
Choisir si vous voulez exclusivement du https pour votre site ou si vous autorisez les deux accès (http/https)
Bravo ! Vous pouvez dès à présent accéder à votre site en https.
Vous pouvez vous rendre sur votre site en https !
Votre certificat sera valable pour 3 mois (90 jours), après ce délais il faudra le renouveler.
Test qualité de votre certificat
Vous pouvez vérifier si vote site passe le test qualité SSL
https //www.ssllabs.com/ssltest/analyze.html?d=VOTRESITE.DOMAIN
https //www.ssllabs.com/ssltest/index.html
Le maximum étant la note de A+
Détails des certificats et clés
Les certificats, chaînes et clés se trouvent dans le dossier /etc/letsencrypt/live/monSite.fr/
# ls -l /etc/letsencrypt/live/monSite.fr/ |
qui sont des liens symboliques vers les fichiers présents dans /etc/letsencrypt/archive/monSite.fr/
# ls -l /etc/letsencrypt/archive/monSite.fr/ |
Vous verrez en allant dans votre répertoire Apache /etc/apache2/sites-available/
un nouveau fichier nommé monSite.fr-le-ssl.conf, il a été créé par CertBot pour configurer le https et contient les liens vers les certificats vus précédemment.
# ls -l /etc/apache2/sites-available/ |
Si vous avez choisi l’option « Secure » vous constaterez également que le fichier original monSite.fr a été modifié avec une redirection vers le https.
Si vous le souhaitez il est possible de tout configurer dans le même fichier (monSite.fr), vous pouvez le faire de la façon suivante
<VirtualHost * 80> |
Il faudra par la suite supprimer les deux fichiers monSite.fr-le-ssl.conf, un sité dans le répertoire /sites-enable
et l’autre dans /site-avaible
# rm /etc/apache2/sites-available/monSite.ovh-le-ssl.conf |
et ensuite relancer Apache
# service apache2 reload |
Étendre un certificat
Vous pouvez ajouter des domaines à un certificat déjà présent, pour se faire lancer la commande :
# ./certbot-auto |
La liste des vhost va s’afficher, il vous suffira de sélectionner un nom de domaine qui contiendra déjà un certificat et d’y ajouter vos nouveaux nom de (sous)domaines
Sélectionner « étendre »
Choisir si vous voulez exclusivement du https pour votre site ou si vous autorisez les deux accès (en http et https)
Le certificat a bien été étendu / renouvelé.
Renouvelez un certificat
Pour obtenir une nouvelle version d’un certificat, exécutez simplement certbot-auto
avec l’option certonly
.
# ./certbot-auto --apache certonly |
Version en ligne de commande
# ./certbot-auto --apache certonly |
# Saving debug log to /var/log/letsencrypt/letsencrypt.log |
Vous pouvez aussi exécuter cette commande et directement préciser les noms de domaine en question.
# ./certbot-auto certonly -d monSite.fr -d ftp.monSite.fr -d www.monSite.fr |
Si votre délais n’est pas complètement expiré vous pouvez choisir de le conserver. A savoir que la création de certificat est limité à 5 tous les 7 jours.
Version en ligne de commande
# ./certbot-auto --apache certonly |
# Saving debug log to /var/log/letsencrypt/letsencrypt.log |
ou comme ceci
# ./certbot-auto --apache -d monSite.fr -d www.monSite.fr |
# Saving debug log to /var/log/letsencrypt/letsencrypt.log |
Renouvelez tous vos certificats en même temps
Pour renouveler de façon non interactive tous vos certificats, exécutez certbot-auto renew
# ./certbot-auto renew |
Si vos certificats sont encore trop récents vous allez avoir ce message :
# ----------------------------------------------------------------------------- |
En ligne de commande :
# ./certbot-auto renew |
# Saving debug log to /var/log/letsencrypt/letsencrypt.log |
Suppression de certificat
Note : Cette méthode est un peu barbare. J’ai dû m’en servir suite à plusieurs tests pour comprendre le fonctionnement de Let’s Encrypt. Je suppose qu’il doit exister un autre moyen de supprimer des certificats.
=> OUI
@TODO : Supprimer proprement un certificat
Attention : Les commandes ci dessous vont supprimer TOUS les certificats AINSI QUE les clés privées, la configuration pour le renouvellement et les fichiers de logs. A lancer que si on a une bonne raison !
Cette manipulation devrait supprimer toutes traces de certificats
# |
Automatisation
# #!/bin/bash |
Documentation
https//fr.wikipedia.org/wiki/Let%27s_Encrypt