Générer un Certificat Let’s Encrypt Sur Apache

Générer un Certificat Let’s Encrypt Sur Apache

texte alternatif

Un petit Article pour vous montrer en quelques étapes comment on peut générer un Certificat Let’s Encrypt sur Apache . La bonne nouvelle est que let’s Encrypt est une autorité de certification publique open et gratuite.(Certificat valide sur la majorité des navigateurs). La seule contre partie est que les certificats sont valides 3 mois ce qui est un avantage d’un point de vue sécurité. Ce qui n’est pas contraignant comme nous allons le voir, dans le bot Certbot inclus qui fait les demandes de certificat, une tâche est automatiquement créée dans Cron (planificateur de tâches Linux) pour le renouveler régulièrement.
Bien entendu let’s encryt convient dans un certain nombre de cas, pour sécuriser une installation personnelle comme jeedom ou pour des blogs ou des petits sites web mais ne conviendra pas pour des environnements de productions plus complexes ou des sites web où transiteraient des données bancaires par exemple.

Prérequis :

  • être propriétaire d’un domaine.
  • Créer un enregistrement dns A qui pointe vers son Adresse IP Public.
  • faire une translation du port 80 et 443 vers son serveur web ou reverse proxy.

I installation du bot Certbot

Pour ce faire vous devez vous connecter en ssh ou en console sur votre machine linux.
Pour réaliser ce tuto j’ai utilisé une machine en Debian 9. Mais il pourra fonctionner si vous être sur rasbian ou ubuntu.

La commande à passer est. : (Note, si vous avez un système avec sudo, il conviendra de rajouter Sudo devant chaque commande).

apt install certbot python-certbot-apache.

apt install certbot python-certbot-apache
Conformation installation paquets
Confirmation d’installation des paquets nécessaires à Certbot .

II Demande et Installation du Certificat

La prochaine étape consiste à demander le certificat à Let’s Encryt.
Cette étape est totalement automatisée grâce à Cerbot, même la configuration dans apache est réalisée par celui ci.
La commande pour ce faire est :.

certbot --apache

La première question que vous posera le Bot c’est votre mail. Cette information est nécessaire notamment si ce certificat arrivait à expiration.

Question mail

Il vous sera demandé par la suite d’accepter les conditions d’utilisation.

Accepter condition d'utilisation

Demande de partage de votre mail auprès du développeur du bot.

Si vous n’avez pas renseigné de nom de domaine dans la configuration apache de votre site, ce qui est mon cas il vous demandera les domaines à sécuriser. (Séparation par virgule ou espace si plusieurs noms à sécuriser.)
Dans ma démo le nom que je souhaite sécuriser est demo.youdom.net.

Dans les prochaines étapes Certbot va obtenir le certificat, activer le module ssl sur apache et installer le certificat.

Obtention et installation certificat.

Vient ensuite la question si vous souhaitez activer la redirection http vers https.
Je vous conseille ce choix(option 2).

Redirection http/ https

Confirmation d’installation du certificat.

Vérification dans un navigateur :

Vérification

III Vérification Renouvellement

La prochaine étape et de vérifier que le renouvellement du certificat est opérationnel.
Etape importante car ces certificats ne sont valables que trois mois.
Commande pour le faire :
certbot renew --dry-run

Maintenant que le renouvellement du certificat est en succès, nous allons vérifier qu’il est correctement planifié dans le cron.

Pour ce faire faite un cd dans /etc/cron.d.

une fois dans le répertoire faire un ls.

Un fichier certbot y est présent si vous l’éditez avec éditeur, vous verrez alors la tâche créée par certbot qui s’exécutera toutes les 12 heures.

Éditeur cerbot

Et pour finir, Pour afficher la liste des tâches planifiées et vérifier qu’elle est bien prise en compte, vous devez exécuter la commande suivante. :
systemctl list-timers

IV Vérification Sécurité SSL

Si vous souhaitez tester la bonne sécurisation de votre installation, je vous conseille le site SSLLAB qui va vérifier point par point votre sécurisation ssl.

Par exemple voici le résultat pour le serveur que je viens de sécuriser.

Les deux principaux problèmes sont la compatibilité avec tls 1.1 et tls 1.0 qui sont des protocoles obsolètes.
Le cipher suite est également à revoir.
Pour corriger ces deux points, il convient d’éditer le fichier ssl.conf se trouvant dans /etc/apache2/mods-enabled/.

Trois lignes de ce fichier sont à modifier :
SSLCipherSuite qui devra contenir la valeur suivante : EECDH+AESGCM:EECDH+CHACHA20:EECDH+AES;
Egalement SSLProtocol doit convenir tlsv1.2 pour indiquer que l’on supporte uniquement ce protocole.
Et SSLHonorCipherOrder doit être défini sur on pour outrepasser le cipher du client.

Il faut également modifier le fichier /etc/letsencrypt/options-ssl-apache.conf avec ces mêmes paramètres. (ce fichier est susceptible d’être écrasé en cas de mise à jour du paquet Cerbot, dans ce cas il pourra être nécessaire de remodifier ces paramètres.

Ensuite, pour la prise en compte il convient de redémarrer apache avec la commande suivante : Service Apache2 restart

En faisant le test à nouveau, nous pouvons voir que la note est maintenant de A, ce qui est beaucoup mieux .

V Révocation Certificat

Et pour conclure ce tuto, nous allons voir comment révoquer le certificat. En effet la révocation fait partie du cycle de vie d’un certificat.
Il est nécessaire de révoquer les certificats, en cas de compromission ou si plus utilisé, par exemple.
La révocation d’un certificat se fait avec la commande suivante :
certbot-auto revoke --domain domain.tld

Dans mon exemple ça serait :

certbot-auto revoke --domain demo.youdom.net

Voilà, j’espère que ce tuto vous aura aidé, Si vous voulez approfondir, je vous invite à être attentifs aux annonces sur Entraide Jeedom, un cursus de formation dédié à la sécurité va bientôt voir le jour.