Créez une application Django en vous référant à cet article. https://qiita.com/SatoshiGachiFujimoto/items/404e45796ac4e0d7bf81
Ouvrez Route 53 à partir de la console AWS.
Cliquez sur "Enregistrer le domaine" pour vous inscrire.
Saisissez le nom de domaine et ajoutez-le au panier.
Entrez vos informations de contact. Vous recevrez un e-mail de confirmation de votre adresse e-mail, alors approuvez-la.
J'accepte les conditions générales d'activation du renouvellement automatique du domaine.
L'enregistrement du domaine est terminé.
Cette fois, il a été terminé en environ 20 minutes.
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
Si vous pouvez accéder à l'application Django avec votre domaine enregistré, vous avez terminé.
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.
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