Skip to main content

No project description provided

Project description

Gufo ACME

Gufo ACME is a Python asyncio client for the ACME protocol.

PyPi version Python Versions License Build Sponsors Ruff

Documentation: https://docs.gufolabs.com/gufo_acme/

Source Code: https://github.com/gufolabs/gufo_acme/


The Automatic Certificate Management Environment (ACME) protocol defines a method for automated certificate signing, now widely used by services such as Let's Encrypt. Gufo ACME is a Python asyncio ACME client library that simplifies the protocol complexity with a straightforward and robust API.

Gufo ACME contains various clients which can be applied to your tasks:

  • AcmeClient - base client to implement any fulfillment functionality by creating subclasses.
  • DavAcmeClient - http-01 fulfillment using WebDAV methods.
  • PowerDnsAcmeClient - dns-01 PowerDNS fulfillment.
  • WebAcmeClient - http-01 static file fulfillment.

Supported Certificate Authorities

Examples

Account Creation

Create an account and store state to the file.

client_key = AcmeClient.get_key()
async with AcmeClient(DIRECTORY, key=client_key) as client:
    await client.new_account(email)
    state = client.get_state()
with open(client_state_path, "wb") as fp:
    fp.write(state)

Private Key Generation

To generate a private key in PEM format.

private_key = AcmeClient.get_domain_private_key()

Generate CSR

To generate a certificate signing request.

csr = AcmeClient.get_domain_csr(domain, private_key)

Sign Certificate

Sign the certificate using http-01 challenge:

CHALLENGE_DIR = "/www/acme/"


class SignAcmeClient(AcmeClient):
    async def fulfill_http_01(
        self, domain: str, challenge: AcmeChallenge
    ) -> bool:
        v = self.get_key_authorization(challenge)
        with open(os.path.join(CHALLENGE_DIR, challenge.token), "wb") as fp:
            fp.write(v)
        return True

    async def clear_http_01(
        self: AcmeClient, domain: str, challenge: AcmeChallenge
    ) -> None:
        os.unlink(os.path.join(CHALLENGE_DIR, challenge.token))

    ...
async with SignAcmeClient.from_state(state) as client:
    cert = await client.sign(domain, csr)

Virtues

  • Pure-Python implementation.
  • Asynchronous.
  • Fully typed.
  • Clean API.
  • Robust well-tested code.
  • Batteries included.
  • 99%+ test coverage.

On Gufo Stack

This product is a part of Gufo Stack - the collaborative effort led by Gufo Labs. Our goal is to create a robust and flexible set of tools to create network management software and automate routine administration tasks.

To do this, we extract the key technologies that have proven themselves in the NOC and bring them as separate packages. Then we work on API, performance tuning, documentation, and testing. The NOC uses the final result as the external dependencies.

Gufo Stack makes the NOC better, and this is our primary task. But other products can benefit from Gufo Stack too. So we believe that our effort will make the other network management products better.

Project details


Download files

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

Source Distribution

gufo_acme-0.4.0.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

gufo_acme-0.4.0-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file gufo_acme-0.4.0.tar.gz.

File metadata

  • Download URL: gufo_acme-0.4.0.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for gufo_acme-0.4.0.tar.gz
Algorithm Hash digest
SHA256 f96969f58f9a3cb0c7ac101bc3d8ded547c44bd73c512e9bad0ba7089b6b4bc9
MD5 22508a68e6312ad3545fe41c05d11413
BLAKE2b-256 f8ebc6b0fe850e31a86a09888557e06115028bcc69a92ef63f50fdd65cb32e57

See more details on using hashes here.

File details

Details for the file gufo_acme-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: gufo_acme-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 20.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for gufo_acme-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 028d32922b9fbb467677bb24b3de3369de96e72edfdcd076fa12aebf846f97d3
MD5 715d1d504d8904b5f24cc5e559750520
BLAKE2b-256 d5eddd57a95ea6324493525993b9d10e3370cbfb136b881100ee4e8df31cea1e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page