Skip to main content

Asynchronous ACME client

Project description

Async ACME Library

publish coverage codeql pypi license

🚀 Project Overview

The Async ACME Client Library is a comprehensive asynchronous Python implementation for managing SSL/TLS certificates using the ACME(Automated Certificate Management Environment) protocol. Designed for simplicity and flexibility, this library enables programmatic certificate issuance, renewal, and management with modern Python async capabilities. It is most convenient to use for cloud providers.

Key Features

  • 🔒 Asynchronous ACME protocol implementation
  • 🌐 Support for Let's Encrypt and other ACME-compatible certificate authorities
  • 🔑 RSA key management and cryptographic operations
  • 🧩 Modular and extensible design
  • 🚀 Modern Python async/await syntax support

Installation

pip install acme-client-lib

Quick Start Example

For example use file: example.py

Core Components

1. RSA Key Management (_rsa_utils.py)

  • Generate and manage RSA keys
  • Create Certificate Signing Requests (CSRs)
  • Handle cryptographic operations

2. ACME Client (_client.py)

  • Create ACME accounts
  • Manage certificate orders
  • Handle challenge verification
  • Download certificate chains
  • Revoke certificate

3. Data Schemas (_schemas.py)

  • Pydantic models for ACME protocol entities
  • Structured representation of challenges, orders, and errors

Supported Workflows

  1. Account Registration
  2. Certificate Order Initialization
  3. Challenge Verification
  4. Certificate Finalization
  5. Certificate Chain Download
  6. Certificate Revocation

Configuration Options

  • ACME Server URL
  • Account Email
  • Domain Names
  • Key Size
  • Challenge Handling Strategy

System Requirements

  • Python 3.9+
  • cryptography library
  • josepy library
  • Async runtime support

Development Tools

  • Poetry for dependency management
  • Black for code formatting
  • Ruff for linting
  • MyPy for type checking
  • Pytest for testing
  • Pre-commit hooks

Security Considerations

  • Uses industry-standard cryptographic primitives
  • Supports configurable key sizes
  • Implements ACME protocol best practices
  • Secure async HTTP interactions

Limitations

  • Requires manual DNS challenge resolution
  • Designed for async environments

Testing

Comprehensive test suite covering:

  • Directory retrieval
  • Nonce generation
  • Account creation
  • Order management
  • Challenge verification
  • Certificate retrieval

License

MIT License - Open-source, commercial use allowed

Contributing

Contributions are welcome! Please review our contribution guidelines and follow our code quality standards.

Future Roadmap

  • Enhanced HTTP-01 challenge automation
  • More flexible certificate management
  • Expanded CA support

Recommended Use Cases

  • Automated certificate management
  • DevOps certificate workflows
  • Web service SSL automation
  • Continuous integration certificate provisioning

Helpful Resources

  • Let's Encrypt Documentation
  • ACME Protocol Specification
  • Project Example Scripts

Contact

For issues, support, or contributions, please open a GitHub issue or contact the maintainers.


Note: Always ensure you have the latest version and review the documentation for the most up-to-date information.

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

acme_client_lib-0.1.1.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

acme_client_lib-0.1.1-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file acme_client_lib-0.1.1.tar.gz.

File metadata

  • Download URL: acme_client_lib-0.1.1.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.1 Linux/6.8.0-1017-azure

File hashes

Hashes for acme_client_lib-0.1.1.tar.gz
Algorithm Hash digest
SHA256 3aaab266b149238ac47bd528f99cd6e3a5d1683da737b59dcd79f34de7e6d1d5
MD5 ca825a85e0ac595a69ab895f83811341
BLAKE2b-256 11d1036fd26901b38e60f994e319cf413a82167459b4fcdf9b89acb246e14b3b

See more details on using hashes here.

File details

Details for the file acme_client_lib-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: acme_client_lib-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.12.1 Linux/6.8.0-1017-azure

File hashes

Hashes for acme_client_lib-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7ccc973dbbf0a9ccfd1c7d834cdee691319c1d3926b415e0c52e2271df5886ac
MD5 fc9785aa781b7ca0de2465805348feb2
BLAKE2b-256 335d39e6511b33e21f44762a9afff26d4591f9bfd1dec860512eec2c175a1d9a

See more details on using hashes here.

Supported by

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