After experiencing the frustration of having websites go down due to expired certificates, we wanted to make a tool that made it easy for developers to manage and track the status of their HTTPS certificates.
What it does
HTTPSAlarm tracks the status of your HTTPS certificates with periodic checks, giving you feedback on both their expiration date and any issues with their security status. Log in and monitor multiple domains, and get emailed warnings in advance when certificates are close to expiring. Unlike other major services, our monitoring system works for certificates behind reverse proxies, such as Cloudflare.
How we built it
We used Django and bootstrap to create the frontend, and used the Python SSL library to check the certificate expiry and provide feedback on HTTPS configuration such as ciphers and TLS version. Sendgrid is used to send the notification emails.
Challenges we ran into
Arielle: I didn't have that much experience with using Django, so learning how to use it was a rocky experience at times.
Guanzhong: Our code ended up only working on Python 3.7, and we couldn't figure out why it wouldn't work on earlier versions. So, to deploy it, we had to compile Python 3.7 on the server from the source code.
Accomplishments that we're proud of
Arielle: I'm really excited to see a website that I helped make go online, especially one that I would actually use for my projects.
Guanzhong: I am happy that I managed to implement code to validate the certificate and HTTPS configuration in a second or two, while most HTTPS tests take significantly longer.
What we learned
We learned how to use our platform more effectively through finding and correcting mistakes in our code. Additionally, we learned a lot about the effects of Red Bull, which we had never tried before.
What's next for HTTPSAlarm
We'd like to increase the extent to which users can customize their notification preferences, giving them more control over how often they'd like to be emailed and for what purposes. We also are considering adding support for slack and SMS notifications.