[PYTHON] HTTPS-Servereinstellungen von Django Project: Verschlüsseln

Hintergrund

Das zweite Django-Projekt befindet sich im Bau. Dieses Mal werden mithilfe des Django REST-Frameworks neue Funktionen wie Back-and-Back, eine vollständig separate Implementierung des Frontends und die https-Kommunikation per SSL aktiviert. Wir gehen voran und nehmen Herausforderungen an.

Dieses Mal wurden Informationen bereits von verschiedenen Personen im Internet geteilt.

  1. Es gibt keine Möglichkeit, es im Django-Projekt festzulegen
  2. Es scheint heutzutage recht einfach zu sein, aber es gibt keinen Text darüber Aus diesem Grund veröffentliche ich eine HTTPS-Serverkonfiguration mit einem kostenlosen Zertifikat namens Let's Encrypt.

Bedingungen

Zunächst müssen in dieser Einstellung die folgenden Bedingungen erfüllt sein.

  1. Die Domain wurde vom Anbieter bezogen (z. B. [AWS Route53](https://console.aws.amazon.com/route53/home#DomainRegistration :), [Mumu Domain](https: // muumuu-domain). .com /) etc.)
  2. Die Site-Konfigurationsdatei ist bereits in Apache2 konfiguriert

Spezifische Methode

Schritt 1. Installation Lässt verschlüsseln

In diesem Zusammenhang wird auf der offiziellen Seite von Lets encrypt empfohlen, die Software Certbot zu verwenden. Wenn Sie jedoch nachschlagen, können Sie dies problemlos tun, ohne dies zu tun. Es scheint, dass.

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

Schritt 2. Bevor Sie das SSL-Zertifikat erstellen

Im Referenztext habe ich es mit dem Befehl create unmittelbar nach der obigen Installation erstellt, aber es hat nicht funktioniert. Tatsächlich sind vorher die folgenden Einstellungen erforderlich.

Schritt 2.1 Einrichten einer Domain mit www auf dem DNS-Server

Ich glaube nicht, dass die Domain, die ich vom Anbieter gekauft habe, www hat, aber ich muss sie als A-Eintrag auf dem DNS-Server hinzufügen. Ein Fehler tritt auf, wenn die Domäne während der Erstellungsphase des Lets Encrypt-Zertifikats kein WWW hat.

Domain: example.com
Zusätzlicher Teil
Name: www.example.com
Type: A record
Value:Server IP Adresse

Vergessen Sie natürlich nicht, die folgenden Elemente zur Apache-Site-Einstellungsdatei hinzuzufügen.

ServerAlias www.example.com

Schritt 2.2 mod_wsgi Kommentieren Sie die Einstellungszeile aus

Dieser Teil ist auf das Django-Projekt beschränkt. Sie benötigen eine Software namens mod_wsgi, um das Django-Projekt auf apache2 bereitzustellen. Nach der Installation von mod_wsgi müssen Sie der Konfigurationsdatei die folgenden Elemente hinzufügen.

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 erstellt nach dem Erstellen eines Zertifikats automatisch eine Site-Anweisungsdatei, die ssl unterstützt, indem auf die vorhandene Einstellungsdatei verwiesen wird. Wenn Sie den obigen Teil jedoch nicht auskommentieren, tritt der folgende Fehler auf Ich werde.

Name duplicates previous WSGI daemon definition

Daher können Sie antworten, indem Sie zuerst den oberen Teil auskommentieren, ein Zertifikat erstellen, es festlegen und dann den Kommentar in der ssl-fähigen Site Prescriptive-Datei entfernen.

Schritt 3. Erstellen eines Zertifikats mit Let's Encrypt

Es befindet sich schließlich in der Erstellungsphase, aber Sie können es einfach erstellen, indem Sie den folgenden Befehl ausführen. Darüber hinaus wird die Einstellungsdatei in Apache automatisch erstellt.

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

Schritt 4. Vergessen Sie nicht, die Konfigurationszeile mod_wsgi zu aktivieren

Für das Django-Projekt müssen Sie die Konfigurationszeile mod_wsgi in der erstellten Apache-Konfigurationsdatei aktivieren.

Schließlich

Jetzt können Sie mit https über das kostenlose SSL-Zertifikat kommunizieren. Last but not least das Ablaufdatum des Zertifikats. Die oben genannte Methode ist 3 Monate gültig, daher müssen Sie sie vor Ablauf erneuern. Es gibt viele Informationen, die von anderen Leuten darüber geteilt werden, daher denke ich, dass Sie sich darauf beziehen sollten.

Beschreibung des Ablaufdatums beim Erstellen

   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"

Referenztext

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

Recommended Posts

HTTPS-Servereinstellungen von Django Project: Verschlüsseln
HTTPS mit Django und Let's Encrypt
Grundeinstellung von Django
Django-Projektbasislinie
Django + MySQL-Einstellungen
Django URL-Einstellungen
Bau der Django-Projektumgebung
Django - Projekt starten ohne Projekt starten
[Django] Benennen Sie das Projekt um
Einstellungen für die Vervollständigung des Django-Befehls
Starten Sie ein Django-Projekt