Skip to main content

Sewer is a programmatic Lets Encrypt(ACME) client

Project description

======
Sewer
======

Sewer is a Let's Encrypt(ACME) client.
It allows you to obtain ssl/tls certificates from Let's Encrypt.
Sewer currently only supports the DNS mode of validation. The only currently supported DNS provider is cloudflare but I will add more as time progresses.


Installation:
=============

`pip install sewer`


Usage:
=======

.. code-block:: python
import sewer

# 1. to create a new certificate:
client = sewer.Client(domain_name='example.com',
CLOUDFLARE_DNS_ZONE_ID='random',
CLOUDFLARE_EMAIL='example@example.com',
CLOUDFLARE_API_KEY='nsa-grade-api-key')
certificate = client.cert()
certificate_key = client.certificate_key
account_key = client.account_key

print "your certicate is:", certificate
print "your certificate's key is:", certificate_key
print "\n\n"
print "you can write them to a file then add that file to your favourite webserver."

with open('certificate.crt', 'w') as certificate_file:
certificate_file.write(certificate)

with open('certificate.key', 'w') as certificate_key_file:
certificate_key_file.write(certificate_key)

print "your account key is:", account_key
print "IMPORTANT: keep your account key in a very safe and secure place."

with open('account_key.key', 'w') as account_key_file:
account_key_file.write(account_key)



# 2. to renew a certificate:
import sewer

with open('account_key.key', 'r') as account_key_file:
account_key = account_key_file.read()

client = sewer.Client(domain_name='example.com',
CLOUDFLARE_DNS_ZONE_ID='random',
CLOUDFLARE_EMAIL='example@example.com',
CLOUDFLARE_API_KEY='nsa-grade-api-key',
account_key=account_key)
certificate = client.renew()
certificate_key = client.certificate_key

with open('certificate.crt', 'w') as certificate_file:
certificate_file.write(certificate)

with open('certificate.key', 'w') as certificate_key_file:
certificate_key_file.write(certificate_key)



TODO:
=====
- make it DNS provider agnostic
- support more DNS providers
- add robust tests
- be able to handle SAN(subject alternative names)



FAQ:
====
* Why another ACME client?
I wanted an ACME client that I could use to programmatically(as a library) acquire/get certificates. However I could not
find anything satisfactory for use in Python code.
* Why is it called Sewer?
Because, for the longest time now, getting certificates has felt like wading through sewers. That was before Let's Encrypt showed up.
Also, I really like the Kenyan hip hop artiste going by the name of Kitu Sewer.



Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sewer, version 0.0.2
Filename, size File type Python version Upload date Hashes
Filename, size sewer-0.0.2-py2-none-any.whl (8.1 kB) File type Wheel Python version py2 Upload date Hashes View
Filename, size sewer-0.0.2.tar.gz (7.2 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page