gufo_acme

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

https://github.com/gufolabs/gufo_acme

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.2%) to scientific vocabulary

Keywords

acme letsencrypt python rfc-8555 typed
Last synced: 6 months ago · JSON representation ·

Repository

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

Basic Info
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 5
Topics
acme letsencrypt python rfc-8555 typed
Created over 2 years ago · Last pushed 8 months ago
Metadata Files
Readme Changelog Contributing Funding License Code of conduct Citation Codeowners Security

README.md

Gufo ACME

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

PyPi version Downloads 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. python 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. python private_key = AcmeClient.get_domain_private_key()

Generate CSR

To generate a certificate signing request. python csr = AcmeClient.get_domain_csr(domain, private_key)

Sign Certificate

Sign the certificate using http-01 challenge:

``` python CHALLENGE_DIR = "/www/acme/"

class SignAcmeClient(AcmeClient): async def fulfillhttp01( self, domain: str, challenge: AcmeChallenge ) -> bool: v = self.getkeyauthorization(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) ```

Features

  • Pure-Python implementation.
  • Asynchronous.
  • Fully typed.
  • Clean API.
  • Built with security in mind.
  • 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.

Owner

  • Name: Gufo Labs
  • Login: gufolabs
  • Kind: organization
  • Location: Italy

Gufo Labs is a private consulting company based in Milan, Italy.

Citation (CITATION.cff)

cff-version: 1.2.0
title: Gufo ACME
message: >-
  If you use this software as part of a publication and wish to cite
  it, please use the metadata from this file.
type: software
authors:
  - name: Gufo Labs
    website: https://gufolabs.com/
  - name: Project's Contributors
    website: https://github.com/gufolabs/gufo_acme
license: BSD-3-Clause

GitHub Events

Total
  • Watch event: 1
  • Push event: 8
Last Year
  • Watch event: 1
  • Push event: 8

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 410 last-month
  • Total dependent packages: 2
  • Total dependent repositories: 1
  • Total versions: 6
  • Total maintainers: 1
pypi.org: gufo-acme

Python Automatic Certificate Management Environment (ACME) client

  • Versions: 6
  • Dependent Packages: 2
  • Dependent Repositories: 1
  • Downloads: 410 Last month
Rankings
Dependent packages count: 3.1%
Downloads: 9.0%
Average: 20.5%
Dependent repos count: 21.7%
Forks count: 29.8%
Stargazers count: 38.8%
Maintainers (1)
Last synced: 6 months ago