Let's Encrypt est une autorité de certification lancée le 3 décembre 2015 (Bêta Version Publique) par l'internet Security Research Group.
Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique TLS.
Le projet généralise l'usage des connexions sécurisées sur internet en supprimant la nécessité de paiement, de configuration du serveur web, des mails de validation et de renouvellement des certificats.
Il réduit donc, la complexité de mise en place et de maintenance du chiffrement TLS.
Pour cela, il faut installer un logiciel (certbot) qui va permet la gestion de certificats pour un serveur web, il est écrit en Python et tous cela au travers du protocole ACME, qui permet l'automatisation des échanges entre l'autorité de certification et le propriétaire du serveur web.
Aujourd'hui, il y a plus de 40 millions de certificats actif et plus de 18 millions de domaine enregistré chez let's encrypt.
Donc vous l'aurez compris, je vais donc mettre en place un certificat TLS avec let's encrypt.
Vous devrez disposer des choses suivantes :
Si apache n'est pas installé sur votre machine, voici la commande sur Debian ou équivalent :
apt-get install apache2
Il faudra activer le module ssl de apache, puis nous allons activer notre hôte virtuel :
a2enmod ssl a2ensite default-ssl.conf
Puis, nous redémarrons le service apache :
service apache2 restart
Vous aurez besoin de git
pour installer le cerbot :
apt-get install git
J'ai choisis de cloner le certbot dans /usr/local
, vous pouvez choisir de le faire ailleurs :
cd /usr/local git clone https://github.com/letsencrypt/letsencrypt
Dans de nombreux cas, vous pouvez simplement exécuter certbot-auto
ou certbot
et le client vous guidera dans le processus d'obtention et d'installation de certificats de manière interactive.
Pour l'aide en ligne de commande complète, vous pouvez taper:
./certbot-auto --help all
Vous pouvez également lui dire exactement ce que vous voulez faire à partir de la ligne de commande.
Par exemple, si vous souhaitez obtenir un certificat pour domaine.com
, autres.domaine.com
et xxx.domaine.org
, en utilisant le plugin Apache pour obtenir et installer les certificats, vous pouvez le faire :
./certbot-auto --apache -d domaine.com -d autres.domaine.com xxx.domaine.org
Il vous faudra suivre les instructions, et vous posséderez vos certificats.
/etc/letsencrypt/live
.
L'une des choses importante à savoir avec let's encrypt est qu'un certificat généré a une durée de validité de 90 jours ce qui est court, heureusement sous linux nous pouvons gérer cela avec une crontab :
crontab -e
Voici, ce que vous ajouterez :
0 1 1 */2 /usr/local/letsencrypt/certbot-auto -n renew
Vous pouvez test votre site sur ssllabs.com, voici mon test:
Ajouter dans votre domaine public une enregistrement CAA, cela va permettre d'indiquer aux autorités de certification quelles sont celles autorisées à certifier le domaine.
Dans sa forme la plus simple, l'enregistrement ressemble en général à l'exemple ci-dessous.
L'autorité let's encrypt (et seulement elle) est autorisée à émettre des certificats pour le nom de domaine example.com, ainsi que pour www.example.com et www.subdomain.example.com grâce au mécanisme hiérarchique de vérification :
exemple.com CAA 0 issue "letsencrypt.org"
Dans apache, nous allons mettre en place certaines options pour :
Voici, donc les options à ajouter dans votre hôte virtuel :
SSLHonorCipherOrder On SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256 SSLProtocol ALL -TLSv1 -TLSv1.1 -SSLv2 -SSLv3 SSLCompression Off
Voilà, votre site possède une certificat chez Let's encrypt, Cool, qu'est-ce que ça vous fait.
source: wikipédia.org