[PYTHON] Enregistrement de domaine et conversion HTTPS de l'application Django créée avec CodeStar avec Route53

Créer une application Django avec CodeStar

Créez une application Django en vous référant à cet article. https://qiita.com/SatoshiGachiFujimoto/items/404e45796ac4e0d7bf81

Enregistrement de domaines

Ouvrez Route 53 à partir de la console AWS.

Cliquez sur "Enregistrer le domaine" pour vous inscrire. image.png

Saisissez le nom de domaine et ajoutez-le au panier. image.png

Entrez vos informations de contact. Vous recevrez un e-mail de confirmation de votre adresse e-mail, alors approuvez-la. image.png

J'accepte les conditions générales d'activation du renouvellement automatique du domaine. image.png

L'enregistrement du domaine est terminé. image.png

Cette fois, il a été terminé en environ 20 minutes. image.png

Associez ce domaine à EC2 de l'application Django créée avec CodeStar. EC2 est associé à une adresse IP Elastic.

Sélectionnez un nom de domaine dans la zone hébergée et cliquez sur Créer un ensemble d'enregistrements. Entrez ce qui suit et cliquez sur Créer. --Nom: www --Type: adresse IPv4 --Valeur: entrez l'adresse IP Elastic associée à EC2

image.png

Si vous pouvez accéder à l'application Django avec votre domaine enregistré, vous avez terminé.

Conversion HTTPS

Convertissez l'application Django créée avec CodeStar en HTTPS.

Connexion SSH à EC2 avec PuTTY. Installez la bibliothèque django-sslserver. Ajoutez-le également aux exigences / common.txt de Django.

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

Modifiez ec2django / settings.py.

$ cd ec2django/
$ vi settings.py

J'ajouterai ce qui suit.

INSTALLED_APPS = [
  ...
    'sslserver',
]

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

Je vais faire un certificat.

$ 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

Modifiez supervisor.sonf.

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

Ajoutez HTTPS aux règles entrantes du groupe de sécurité EC2. image.png

Après le redémarrage, vous devriez voir l'application Django avec mon certificat.

Il semble bon de remplacer les server.key et server.crt du certificat oleore par ceux créés par Let's Encrypt. Installez certbot et exécutez certbot-auto pour obtenir le certificat.

Cependant, j'ai eu diverses erreurs, alors j'ai fait un essai et une erreur. ..

$ 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

Je suis désolé que l'article ait une faible reproductibilité. Par essais et erreurs, certbot-auto peut maintenant être exécuté. Lorsque j'exécute certbot-auto, je dois définir l'emplacement du fichier statique dans Django afin que l'autorité de certification puisse lire le fichier de certification.

HTTPS sur le serveur exécutant Djnago avec letsencrypt

Je n'étais pas sûr, donc j'ai mis seulement apache (httpd) et j'ai lancé certbot-auto pour obtenir le certificat.

Créer un serveur WEB Django sur AWS (Amazon Linux 2, HTTPS)

sudo yum -y install httpd24

J'ai eu une erreur qui dépend de la série httpd 2.2. .. J'ai réussi à l'installer en le désinstallant.

Ajoutez-le sous Listen 80 dans /etc/httpd/conf/httpd.conf.

sudo vi /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    DocumentRoot "/var/www/html"
 ServerName "{nom de domaine}"
 ServerAlias "www. {Nom de domaine}"
</VirtualHost>

Démarrez Apache.

sudo service httpd start

Exécutez ./certbot-auto, remplacez les .crt et .key résultants, redémarrez l'application Django et vous avez terminé.

 $ 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

Je vous remercie pour votre travail acharné. De plus, quand je le fais depuis le début, je veux bien le mettre en place.

Recommended Posts

Enregistrement de domaine et conversion HTTPS de l'application Django créée avec CodeStar avec Route53
HTTPS avec Django et Let's Encrypt
Faites Django avec CodeStar (Python3.6.8, Django2.2.9)
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Créer une application Web avec Django
Pour améliorer la réutilisabilité et la maintenabilité des flux de travail créés avec Luigi
Effectuer un test d'application de fichier de migration avec Django + PostgreSQL (Evil Edition)
Lancement d'une application Web sur AWS avec django et modification des tâches