Being able to run your dev instance over HTTPS is really useful: you might spot some weird bug that would have bitten you in production, and if you do find one, you can debug it much more easily. Googling for this subject resulted in several different tutorials using stunnel, but all of them broke in some way on my machine running Ubuntu Maverick. So here is how I got stunnel working – perhaps it will help someone else too:
sudo aptitude install stunnel sudo su - cd /etc mkdir stunnel cd stunnel openssl req -new -x509 -days 365 -nodes -out stunnel.pem -keyout stunnel.pem openssl gendh 2048 >> stunnel.pem chmod 600 stunnel.pem logout cd
Now create a file called dev_https with the following text:
pid= foreground=yes debug = 7 [https] accept=8443 connect=8000 TIMEOUTclose=1
Note: this assumes your web server is running on port 8000. If it’s not, change the value of “connect” to the appropriate port.
Finally, run:
sudo stunnel4 dev_https
Now if you go to https://localhost:8443/, you should see your HTTPS-enabled dev instance!
Note: To properly simulate a HTTPS connection in Django, you should also set an environment variable HTTPS=on. Without this, request.is_secure() will return False. You could set it at the same time as starting your dev instance e.g:
HTTPS=on python manage.py runserver
About us: Isotoma is a bespoke software development company based in York and London specialising in web apps, mobile apps and product design. If you’d like to know more you can review our work or get in touch.