[PYTHON] Domainregistrierung und HTTPS-Konvertierung der mit CodeStar mit Route53 erstellten Django-App

Erstellen Sie eine Django-App mit CodeStar

Erstellen Sie eine Django-App, indem Sie auf diesen Artikel verweisen. https://qiita.com/SatoshiGachiFujimoto/items/404e45796ac4e0d7bf81

Domain Registrierung

Öffnen Sie Route 53 über die AWS-Konsole.

Klicken Sie auf "Domain registrieren", um sich zu registrieren. image.png

Geben Sie den Domainnamen ein und legen Sie ihn in den Warenkorb. image.png

Geben Sie Ihre Kontaktinformationen ein. Sie erhalten eine Bestätigungs-E-Mail mit Ihrer E-Mail-Adresse. Genehmigen Sie diese. image.png

Ich akzeptiere die Bedingungen für die Aktivierung der automatischen Domain-Erneuerung. image.png

Die Domainregistrierung ist abgeschlossen. image.png

Diesmal war es in ca. 20 Minuten erledigt. image.png

Verknüpfen Sie diese Domäne mit EC2 der mit CodeStar erstellten Django-Anwendung. EC2 ist eine elastische IP zugeordnet.

Wählen Sie einen Domainnamen aus der gehosteten Zone aus und klicken Sie auf Datensatz erstellen. Geben Sie Folgendes ein und klicken Sie auf Erstellen.

image.png

Wenn Sie mit Ihrer registrierten Domain auf die Django-App zugreifen können, sind Sie fertig.

HTTPS-Konvertierung

Konvertieren Sie die mit CodeStar erstellte Django-App in HTTPS.

SSH-Verbindung zu EC2 mit PuTTY. Installieren Sie die Bibliothek django-sslserver. Fügen Sie es auch zu Djangos Anforderungen / common.txt hinzu.

$ sudo su
$ source /home/ec2-user/environment/bin/activate
$ pip install django-sslserver

Bearbeiten Sie ec2django / settings.py.

$ cd ec2django/
$ vi settings.py

Ich werde folgendes hinzufügen.

INSTALLED_APPS = [
  ...
    'sslserver',
]

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

Ich werde ein Zertifikat machen.

$ openssl genrsa 2048 > server.key
$ openssl req -new -key server.key > server.csr
$ openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt

Bearbeiten Sie Supervisor.sonf.

command = /home/ec2-user/environment/bin/gunicorn -b 0.0.0.0:443 ec2django.wsgi --keyfile server.key --certfile server.crt

Fügen Sie HTTPS zu den eingehenden Regeln der EC2-Sicherheitsgruppe hinzu. image.png

Nach dem Neustart sollte die Django-App mit meinem Zertifikat angezeigt werden.

Es scheint gut, die Datei server.key und server.crt des Oleore-Zertifikats durch die von Let's Encrypt erstellten zu ersetzen. Installieren Sie certbot und führen Sie certbot-auto aus, um das Zertifikat zu erhalten.

Da ich jedoch verschiedene Fehler bekam, machte ich einen Versuch und Irrtum. ..

$ wget https://dl.eff.org/certbot-auto 
$ chmod +x certbot-auto 
$ ./certbot-auto --debug -v 
$ sudo /opt/eff.org/certbot/venv/bin/pip install cryptography
$ sudo /opt/eff.org/certbot/venv/bin/pip install interface
$ sudo /opt/eff.org/certbot/venv/bin/pip install zope
$ sudo /opt/eff.org/certbot/venv/bin/pip install parsedatetime==2.5

Es tut mir leid, dass der Artikel eine geringe Reproduzierbarkeit aufweist. Durch Ausprobieren kann certbot-auto nun ausgeführt werden. Wenn ich certbot-auto ausführe, muss ich den Speicherort der statischen Datei in Django festlegen, damit die Zertifizierungsstelle die Zertifizierungsdatei lesen kann.

HTTPS auf einem Server, auf dem Djnago mit letsencrypt ausgeführt wird

Ich war mir nicht sicher, also habe ich nur Apache (httpd) gesetzt und certbot-auto ausgeführt, um das Zertifikat zu erhalten.

Erstellen Sie einen Django-WEB-Server unter AWS (Amazon Linux 2, HTTPS)

sudo yum -y install httpd24

Ich habe einen Fehler erhalten, der von der httpd 2.2-Serie abhängt. .. Ich habe es durch Deinstallation installiert.

Fügen Sie es unter Listen 80 in /etc/httpd/conf/httpd.conf hinzu.

sudo vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    DocumentRoot "/var/www/html"
 Servername "{Domainname}"
 ServerAlias "www. {Domain name}"
</VirtualHost>

Starten Sie Apache.

sudo service httpd start

Führen Sie ./certbot-auto aus, ersetzen Sie die resultierende .crt und .key, starten Sie die Django-App neu und fertig.

 $ sudo cp /etc/letsencrypt/live/www.domainname/fullchain.pem /home/ec2-user/server.crt
 $ sudo cp /etc/letsencrypt/live/www.domainname/privkey.pem /home/ec2-user/server.key
$ service helloworld restart

Danke für deine harte Arbeit. Auch wenn ich es von Anfang an mache, möchte ich es ordentlich zusammenstellen.

Recommended Posts

Domainregistrierung und HTTPS-Konvertierung der mit CodeStar mit Route53 erstellten Django-App
HTTPS mit Django und Let's Encrypt
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Erstellen Sie eine Webanwendung mit Django
Verbesserung der Wiederverwendbarkeit und Wartbarkeit von mit Luigi erstellten Workflows
Führen Sie einen Anwendungstest für Migrationsdateien mit Django + PostgreSQL (Evil Edition) durch.
Startete eine Webanwendung auf AWS mit Django und wechselte Jobs