Blog / Howto

Automatically generating and renewing Let's Encrypt SSL certificates with the certbot client and Ansible

August 11, 2016

I just finished updating my ansible-django-stack project and added tasks to automatically issue a Let's Encrypt SSL certificate and set up a cron job to auto-renew the certificate.

We're now using it for all our Shopify apps which are built in Django. Let's Encrypt certificates are only valid for 90 days, so if you have a bunch of web apps like we do and have more planned in the future, automating this process now could …

Generating free trusted SSL certificates with Let's Encrypt

July 19, 2016

I've always hated the idea of having to pay for SSL certificates. You could always generate them yourself for free with OpenSSL and they're just as secure as the paid ones. But if you're running a public-facing website, you're pretty much stuck and have to pay for one if you don't want your visitors seeing security warnings in their browser. At least that was the case until Let's Encrypt, a free certificate authority, came …

SSH tunneling and dealing with webhooks that require a trusted SSL certificate when developing locally with Django

July 15, 2016

I'm currently working on version 2 of our Shopify app where we'll be adding custom Slack slash commands. When adding slash commands to a custom app, Slack requires the receiving server to have a trusted (not self-signed) SSL certificate.

Normally, what we do is simply create a reverse SSH tunnel to our stage server which is publicly accessible to receive webhooks, for example:

ssh root@stage.example.com -R 8000:localhost:80

The above example will basically forward any traffic …

Adding a Time Zone setting to your Django app

October 29, 2015

I'm currently working with a friend of mine on a Django app for Amazon sellers to automatically reprice their product listings. One of the features of the app is to show the price change history of their listings. Since they would want to see the timestamp of when the change occurred, we added a setting for them to set their Time Zone so they won't have to do time adjustments in their head.

We store …