[PYTHON] Paramètres du serveur HTTPS de Django Project: Let's Encrypt

Contexte

Le deuxième projet Django est en cours de construction. Cette fois, en utilisant Django REST framework, de nouvelles choses telles que le va-et-vient, l'implémentation complètement séparée du front-end et la communication https par ssl sont activées. Nous procédons en relevant les défis.

Cette fois, les informations étaient déjà partagées par différentes personnes sur le net,

  1. Il n'y a aucun moyen de le définir dans le projet Django
  2. Il semble qu'il soit assez facile de régler ces jours-ci, mais il n'y a pas de texte à ce sujet Pour cette raison, je poste sur une configuration de serveur HTTPS avec un certificat gratuit appelé Let's Encrypt.

conditions

Tout d'abord, dans ce cadre, les conditions suivantes doivent être remplies.

  1. Le domaine a été obtenu auprès du fournisseur (par exemple [AWS Route53](https://console.aws.amazon.com/route53/home#DomainRegistration :), [Mumu Domain](https: // muumuu-domain) .com /) etc.)
  2. Le fichier de configuration du site est déjà configuré dans Apache2

Méthode spécifique

Étape 1. Installez Lets encrypt

À ce sujet, la page officielle de Lets encrypt recommande d'utiliser un logiciel appelé Certbot, mais si vous la recherchez, vous pouvez facilement le faire sans le faire. Il semble.

$ cd /usr/local
$ sudo git clone https://github.com/letsencrypt/letsencrypt

Étape 2. Avant de créer le certificat SSL

Dans le texte de référence, je l'ai fait avec la commande create immédiatement après l'avoir installé ci-dessus, mais cela n'a pas fonctionné. En fait, les paramètres suivants sont requis avant cela.

Étape 2.1 Configuration d'un domaine avec www sur le serveur DNS

Je ne pense pas que le domaine que j'ai acheté auprès du fournisseur ait www, mais je dois l'ajouter en tant qu'enregistrement A sur le serveur DNS. Une erreur se produit si le domaine n'a pas www pendant la phase de création du certificat Lets Encrypt.

Domain: example.com
Partie supplémentaire
Name: www.example.com
Type: A record
Value:Adresse IP du serveur

Bien sûr, n'oubliez pas d'ajouter les éléments suivants au fichier de paramètres du site apache.

ServerAlias www.example.com

Étape 2.2 mod_wsgi Commentez la ligne de réglage

Cette partie est limitée au projet Django. Lors du déploiement du projet Django sur apache2, vous aurez besoin d'un logiciel appelé mod_wsgi. Après avoir installé mod_wsgi, vous devrez ajouter les éléments suivants au fichier de configuration.

WSGIDaemonProcess django_wsgi pythonpath=/var/www/myproject:/usr/local/lib/python2.7/dist-packages	
WSGIProcessGroup django_wsgi
WSGIScriptAlias / /var/www/myproject/myproject/wsgi.py

Lets Encrypt créera automatiquement un fichier d'instructions de site prenant en charge SSL après la création d'un certificat en se référant au fichier de paramètres existant, mais si vous ne commentez pas la partie ci-dessus, l'erreur suivante se produira Je vais.

Name duplicates previous WSGI daemon definition

Par conséquent, vous pouvez répondre en mettant d'abord en commentaire la partie supérieure, en créant un certificat, en le définissant, puis en supprimant le commentaire dans le fichier normatif de site ssl.

Étape 3. Création d'un certificat avec Let's Encrypt

Il est enfin en phase de création, mais vous pouvez facilement le créer simplement en exécutant la commande suivante. De plus, le fichier de configuration dans apache est également créé automatiquement.

cd letsencrypt/
sudo ./letsencrypt-auto --apache -d example.com -d www.example.com

Étape 4. N'oubliez pas d'activer la ligne de configuration mod_wsgi

Pour le projet Django, vous devez activer la ligne de configuration mod_wsgi dans le fichier de configuration apache créé.

finalement

Vous pouvez désormais communiquer avec https en utilisant le certificat SSL gratuit. Dernier point mais non le moindre, la date d'expiration du certificat. La méthode ci-dessus est valable 3 mois, vous devez donc la renouveler avant son expiration. Il y a beaucoup d'informations partagées par d'autres personnes à ce sujet, alors je pense que vous devriez vous y référer.

Description de la date d'expiration lors de la création

   Your cert will expire on 2017-12-04. To obtain a new or tweaked
   version of this certificate in the future, simply run
   letsencrypt-auto again with the "certonly" option. To
   non-interactively renew *all* of your certificates, run
   "letsencrypt-auto renew"

Texte de référence

Setting up SSL on a Django App with Let's Encrypt - Ubuntu, Apache, and mod_wsgi

Recommended Posts

Paramètres du serveur HTTPS de Django Project: Let's Encrypt
HTTPS avec Django et Let's Encrypt
Configuration initiale de django
Référence du projet Django
Paramètres Django + MySQL
Paramètres d'URL de Django
Construction de l'environnement du projet Django
Django - démarrer le projet sans démarrer le projet
[Django] Renommer le projet
Paramètres d'achèvement de la commande Django
Démarrer un projet Django