{"id":181,"date":"2020-06-01T16:52:37","date_gmt":"2020-06-01T14:52:37","guid":{"rendered":"https:\/\/news.julien-anne.fr\/?p=181"},"modified":"2025-01-11T13:08:53","modified_gmt":"2025-01-11T12:08:53","slug":"installer-et-configurer-lets-encrypt-pour-votre-application-django-sur-une-debian10","status":"publish","type":"post","link":"https:\/\/news.julien-anne.fr\/installer-et-configurer-lets-encrypt-pour-votre-application-django-sur-une-debian10\/","title":{"rendered":"Installer et configurer Let’s encrypt pour votre application django sur une debian10"},"content":{"rendered":"\n
Dans ce tutoriel nous allons voir comment installer et configurer Let’s encrypt pour votre application Django sur un serveur debian 10.<\/p>\n\n\n\n
Afin de simplifier les commandes toutes les instructions suivantes sont \u00e0 r\u00e9aliser avec les droits root.<\/p>\n\n\n\n
Pour utiliser Let’s encrypt sur notre serveur nous allons ajouter une source de donn\u00e9es pour le gestionnaire de paquets apt, pour cela \u00e9diter le fichier Lancer ensuite les 2 commandes suivantes afin de respectivement mettre \u00e0 jour la liste des paquets disponibles et installer le paquet certbot n\u00e9cessaire pour simplifier l’installation de certificats Let’s encrypt :<\/p>\n\n\n\n Un petit point sur le fonctionnement du paquet certbot, afin de ne pas perdre vos configurations initiales, la commande certbot r\u00e9alise une copie de votre virtualhost (port 80 – http) avant de r\u00e9aliser des modifications afin de le passer en port 443 – https, ensuite en fonction des r\u00e9ponses que vous fournirez \u00e0 la commande certbot ce dernier modifiera votre virtualhost (port 80) pour r\u00e9aliser une redirection automatique vers le port 443 ou non. <\/p>\n\n\n\n Le souci que j’ai rencontr\u00e9 est que certaines directives dans notre virtualhost (port 80) ne peuvent \u00eatre pr\u00e9sentes et actives qu’une seule fois sur la totalit\u00e9 des virtualhosts et les directives WSGI font parties de ces directives, la duplication du virtualhost (port 80) entra\u00eene donc une erreur pour Apache2 si nous ne prenons pas garde avant d’utiliser certbot.<\/p>\n\n\n\n Pour nettoyer notre virtualhost (port 80), nous allons dans un premier temps commenter, avec un # en d\u00e9but de ligne, les directives WSGI suivantes : A partir de ce moment l\u00e0 si vous red\u00e9marrez votre apache2, votre application Django ne fonctionnera plus. Ne vous inqui\u00e9tez pas nous allons remettre cela en ordre rapidement.<\/p>\n\n\n\n Pour cela rien de plus simple, en root, lancer la commande suivante (attention les crochets sont l\u00e0 seulement pour indiquer que vous pouvez pr\u00e9cisez votre nom de domaine avec et sans www si vous souhaitez un certificat pour les 2, dans le cas o\u00f9 vous \u00eates sur un sous domaine la partie entre crochets et les crochets est \u00e0 supprimer) :<\/p>\n\n\n\n Si c’est votre premier certificat g\u00e9n\u00e9r\u00e9 par certbot vous devrez r\u00e9pondre \u00e0 quelques questions : <\/p>\n\n\n\n Enfin dans tous les cas (premier certificat ou non) vous devrez r\u00e9pondre sur le choix de la redirection automatique entre le http et le https, le choix 2 permet cette redirection.<\/p>\n\n\n\n Certbot va ensuite communiquer avec les serveurs de Let’s encrypt afin de g\u00e9n\u00e9rer les certificats demand\u00e9s et les installer sur votre serveur et les configurer dans votre virtualhost (c’est beau l’automatisation), et tout ceci apr\u00e8s avoir certifi\u00e9 que vous poss\u00e9dez bien le nom de domaine mentionn\u00e9 et que ce dernier pointe bien sur votre serveur. <\/p>\n\n\n\n Enfin certbot va recharger les configurations Apache2. Et l\u00e0 c’est le drame votre application n’est plus en ligne, rappelez vous nous avions comment\u00e9 dans le virtualhost (port 80) les directives WSGI, elles le sont donc aussi dans notre virtualhost (port 443 – https).<\/p>\n\n\n\n Nous devons donc maintenant d\u00e9-commenter ces 3 directives Ensuite nous pouvons v\u00e9rifier le bon \u00e9tat de l’art de nos virtualhosts avec : Si tout est au vert, lancer Enfin afin de v\u00e9rifier sans rien modifier la possibilit\u00e9 du renouvellement vous pouvez lancer : Pour information vous pouvez retrouver le script de mise \u00e0 jour automatique du certificat dans le fichier Parfait nous arrivons au bout de notre tutoriel car nous avons dor\u00e9navant un projet Django qui tourne sur un serveur debian 10 avec apache2 et son module WSGI, tout ceci derri\u00e8re un certificat Let’s encrypt auto-renouvel\u00e9. Si vous souhaitez revoir des \u00e9tapes de ce tutoriel, rendez-vous sur le sommaire du tutoriel<\/a> pour continuer votre lecture.<\/p>\n\n\n\n Image par Tumisu<\/a> de Pixabay<\/a><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":" Dans ce tutoriel nous allons voir comment installer et configurer Let’s encrypt pour votre application Django sur un serveur debian 10. Les pr\u00e9-requis Un serveur debian 10 install\u00e9 Un serveur web apache2 install\u00e9 Un projet django install\u00e9 dans le dossier \/opt\/django-deploy-production-example, pour le tutoriel nous prendrons ce projet : https:\/\/gitlab.com\/julienanne\/django-deploy-production-example avec l\u2019environnement configur\u00e9 pour ce […]<\/p>\n","protected":false},"author":1,"featured_media":196,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":""},"categories":[7,6,8,4],"tags":[],"class_list":["post-181","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-debian","category-django","category-lets-encrypt","category-python"],"jetpack_featured_media_url":"https:\/\/news.julien-anne.fr\/wp-content\/uploads\/2020\/06\/safety-2890768_1920_retouche1280x465.jpg","_links":{"self":[{"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/posts\/181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/comments?post=181"}],"version-history":[{"count":13,"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/posts\/181\/revisions"}],"predecessor-version":[{"id":195,"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/posts\/181\/revisions\/195"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/media\/196"}],"wp:attachment":[{"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/media?parent=181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/categories?post=181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/news.julien-anne.fr\/wp-json\/wp\/v2\/tags?post=181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}\/etc\/apt\/sources.list<\/code> et ajouter en fin de fichier la ligne suivante :<\/p>\n\n\n\n
deb http:\/\/ftp.debian.org\/debian buster-backports main<\/pre>\n\n\n\n
apt update\napt install python-certbot-apache -t buster-backports<\/pre>\n\n\n\n
Mise en place de notre certificat ssl et particularit\u00e9 avec les instructions WSGI<\/h2>\n\n\n\n
Nettoyage de notre virtualhost (port 80 – http)<\/h3>\n\n\n\n
WSGIDaemonProcess, WSGIProcessGroup, WSGIScriptAlias<\/code><\/p>\n\n\n\n
Demandons maintenant \u00e0 certbot de nous g\u00e9n\u00e9rer et installer un certificat SSL<\/h3>\n\n\n\n
certbot --apache -d votre_nom_de_domaine [-d www.votre_nom_de_domaine]<\/pre>\n\n\n\n
Remettons en ligne notre projet Django en https<\/h3>\n\n\n\n
WSGIDaemonProcess, WSGIProcessGroup, WSGIScriptAlias<\/code> dans le virtualhost copi\u00e9 puis modifi\u00e9 par certbot, ce virtualhost prend le m\u00eame nom que votre virtualhot (port 80) suivi de
-le-ssl.conf<\/code><\/p>\n\n\n\n
apache2ctl configtest<\/code><\/p>\n\n\n\n
systemctl restart apache2<\/code><\/p>\n\n\n\n
certbot renew --dry-run<\/code><\/p>\n\n\n\n
\/etc\/cron.d\/certbot<\/code>, ce fichier permet de lancer tr\u00e8s r\u00e9guli\u00e8rement la v\u00e9rification de la date d’expiration du certificat et ainsi faire le renouvellement du certificat si n\u00e9cessaire<\/p>\n\n\n\n