Django’s development server doesn’t normally support HTTPS so it’s hard to test applications with HTTPS without deploying the application to a real web server that supports HTTPS. The secret is to use two development server instances, one for http and one for https, and to use a tool called stunnel to can create an ssl tunnel to the development server to support HTTPS.
First we need to set up stunnel using the documentation .
After it’s installed you can create a pem for stunnel.
openssl req -new -days 365 -nodes -out newreq.pem -keyout /etc/stunnel/stunnel.pem
After that we create a settings file (which I saved to a file called dev_https). The “accept” setting is the port of the HTTPS connection. The “connect” is the port of the development server instance we are using for https.
pid =
[https]
accept=8002
connect=8003
After that we start the stunnel daemon.
stunnel dev_https
Now we start the Django development server instance we are going to use for https. The HTTPS=on environment variable allows request.is_secure() to return True properly.
HTTPS=on python manage.py runserver 8003
Then we start the http server.
python manage.py runserver 8000
So now you can connect to http://localhost:8000 and https://localhost:8002 to test your application using https.