Let’s encrypt – Julien ANNE https://news.julien-anne.fr Développeur Ruby On Rails, Coach Craft et Agile Sat, 11 Jan 2025 12:08:53 +0000 fr-FR hourly 1 https://wordpress.org/?v=6.7.1 https://news.julien-anne.fr/wp-content/uploads/2020/07/cropped-knocker-1172580_1920-retouche512x512-32x32.jpg Let’s encrypt – Julien ANNE https://news.julien-anne.fr 32 32 177439806 Installer et configurer Let’s encrypt pour votre application django sur une debian10 https://news.julien-anne.fr/installer-et-configurer-lets-encrypt-pour-votre-application-django-sur-une-debian10/ Mon, 01 Jun 2020 14:52:37 +0000 https://news.julien-anne.fr/?p=181 Dans ce tutoriel nous allons voir comment installer et configurer Let’s encrypt pour votre application Django sur un serveur debian 10.

Les pré-requis

Installons les dépendances nécessaires à Let’s encrypt

Afin de simplifier les commandes toutes les instructions suivantes sont à réaliser avec les droits root.

Pour utiliser Let’s encrypt sur notre serveur nous allons ajouter une source de données pour le gestionnaire de paquets apt, pour cela éditer le fichier /etc/apt/sources.list et ajouter en fin de fichier la ligne suivante :

deb http://ftp.debian.org/debian buster-backports main

Lancer ensuite les 2 commandes suivantes afin de respectivement mettre à jour la liste des paquets disponibles et installer le paquet certbot nécessaire pour simplifier l’installation de certificats Let’s encrypt :

apt update
apt install python-certbot-apache -t buster-backports

Mise en place de notre certificat ssl et particularité avec les instructions WSGI

Un petit point sur le fonctionnement du paquet certbot, afin de ne pas perdre vos configurations initiales, la commande certbot réalise une copie de votre virtualhost (port 80 – http) avant de réaliser des modifications afin de le passer en port 443 – https, ensuite en fonction des réponses que vous fournirez à la commande certbot ce dernier modifiera votre virtualhost (port 80) pour réaliser une redirection automatique vers le port 443 ou non.

Le souci que j’ai rencontré est que certaines directives dans notre virtualhost (port 80) ne peuvent être présentes et actives qu’une seule fois sur la totalité des virtualhosts et les directives WSGI font parties de ces directives, la duplication du virtualhost (port 80) entraîne donc une erreur pour Apache2 si nous ne prenons pas garde avant d’utiliser certbot.

Nettoyage de notre virtualhost (port 80 – http)

Pour nettoyer notre virtualhost (port 80), nous allons dans un premier temps commenter, avec un # en début de ligne, les directives WSGI suivantes : WSGIDaemonProcess, WSGIProcessGroup, WSGIScriptAlias

A partir de ce moment là si vous redémarrez votre apache2, votre application Django ne fonctionnera plus. Ne vous inquiétez pas nous allons remettre cela en ordre rapidement.

Demandons maintenant à certbot de nous générer et installer un certificat SSL

Pour cela rien de plus simple, en root, lancer la commande suivante (attention les crochets sont là seulement pour indiquer que vous pouvez précisez votre nom de domaine avec et sans www si vous souhaitez un certificat pour les 2, dans le cas où vous êtes sur un sous domaine la partie entre crochets et les crochets est à supprimer) :

certbot --apache -d votre_nom_de_domaine [-d www.votre_nom_de_domaine]

Si c’est votre premier certificat généré par certbot vous devrez répondre à quelques questions :

  1. Un email de contact
  2. A ou D pour indiquer si vous êtes d’accord avec les termes de la licence ou pas (A pour Agree et D pour Disagree)
  3. Y ou N pour indiquer si vous désirez partager votre email avec certbot

Enfin dans tous les cas (premier certificat ou non) vous devrez répondre sur le choix de la redirection automatique entre le http et le https, le choix 2 permet cette redirection.

Certbot va ensuite communiquer avec les serveurs de Let’s encrypt afin de générer les certificats demandés et les installer sur votre serveur et les configurer dans votre virtualhost (c’est beau l’automatisation), et tout ceci après avoir certifié que vous possédez bien le nom de domaine mentionné et que ce dernier pointe bien sur votre serveur.

Enfin certbot va recharger les configurations Apache2. Et là c’est le drame votre application n’est plus en ligne, rappelez vous nous avions commenté dans le virtualhost (port 80) les directives WSGI, elles le sont donc aussi dans notre virtualhost (port 443 – https).

Remettons en ligne notre projet Django en https

Nous devons donc maintenant dé-commenter ces 3 directives WSGIDaemonProcess, WSGIProcessGroup, WSGIScriptAlias dans le virtualhost copié puis modifié par certbot, ce virtualhost prend le même nom que votre virtualhot (port 80) suivi de -le-ssl.conf

Ensuite nous pouvons vérifier le bon état de l’art de nos virtualhosts avec : apache2ctl configtest

Si tout est au vert, lancer systemctl restart apache2

Enfin afin de vérifier sans rien modifier la possibilité du renouvellement vous pouvez lancer : certbot renew --dry-run

Pour information vous pouvez retrouver le script de mise à jour automatique du certificat dans le fichier /etc/cron.d/certbot, ce fichier permet de lancer très régulièrement la vérification de la date d’expiration du certificat et ainsi faire le renouvellement du certificat si nécessaire

Parfait nous arrivons au bout de notre tutoriel car nous avons dorénavant un projet Django qui tourne sur un serveur debian 10 avec apache2 et son module WSGI, tout ceci derrière un certificat Let’s encrypt auto-renouvelé. Si vous souhaitez revoir des étapes de ce tutoriel, rendez-vous sur le sommaire du tutoriel pour continuer votre lecture.

Image par Tumisu de Pixabay

]]>
181
Tutoriel Django MySql Debian 10 Apache2 Let’s Encrypt Gitlab https://news.julien-anne.fr/tutoriel-django-mysql-debian-10-apache2-lets-encrypt-gitlab/ https://news.julien-anne.fr/tutoriel-django-mysql-debian-10-apache2-lets-encrypt-gitlab/#comments Mon, 04 May 2020 18:18:21 +0000 https://news.julien-anne.fr/?p=77 Ce tutoriel va être sur une série d’articles avec pour chaque article un objectif défini, l’idée principale de ce tutoriel sera de mettre en production un code source python réalisé avec Django et une base de données MySql, versionné par Git et « stocké » sur Gitlab, sur un serveur Debian 10 avec Apache2 et le module WSGI et enfin le ssl de ce projet avec Let’s Encrypt. Ok il y a un peu de travail.

Sur ce premier article de la série, nous allons principalement retrouver les pré-requis avant de se lancer et le sommaire pointant sur chaque partie individuelle de ce tutoriel, ainsi qu’une courte description pour chaque partie. Les différentes parties de ce tutoriel sortiront au fur et à mesure, en commençant par les parties à plus fortes valeurs ajoutées 😉 pour les parties en constructions j’essaierai de trouver un tutoriel déjà présent sur Internet.

Les pré-requis

Il va nous falloir différents éléments pour mener à bien ce tutoriel :

Sommaire

Chaque partie est indépendante mais le tout fera un tutoriel assez complet. Bonne lecture.

Image par Claire05 de Pixabay

]]>
https://news.julien-anne.fr/tutoriel-django-mysql-debian-10-apache2-lets-encrypt-gitlab/feed/ 5 77