ACMEOW v1.0.2
🎉 ACMEOW v1.0.2
Production-grade ACME protocol client library for Python
We're excited to announce the first stable release of ACMEOW, a comprehensive Python library for automated SSL/TLS certificate management using the ACME
protocol (RFC 8555).
✨ Features
Core ACME Protocol Support
- Full RFC 8555 compliance - Account management, certificate ordering, and revocation
- Multiple challenge types - DNS-01, HTTP-01, and TLS-ALPN-01 (RFC 8737)
- Flexible key types - RSA (2048-8192 bit) and ECDSA (P-256, P-384)
- Automatic retry with exponential backoff - Handles transient failures gracefully
- Order recovery - Resume interrupted certificate orders
DNS Provider System
- Pluggable architecture - Easy integration with any DNS provider
- Built-in providers:
- Cloudflare
- AWS Route53
- DigitalOcean
- Manual (interactive)
- Custom provider support - Register your own providers
Convenience Methods
- quick_issue() - Issue a certificate in one call
- issue_batch() - Issue multiple certificates efficiently
- renew_if_needed() - Conditional certificate renewal
- get_certificate_info() - Parse certificate details
- check_certificate_expiry() - Quick expiration status check
Observability & Rate Limiting
- Hook system - Monitor certificate operations with event callbacks
- Smart rate limiting - Token bucket algorithm with automatic backoff
- Comprehensive metrics - Track request rates and limits
Challenge Handlers
- CallbackDnsHandler - DNS-01 with custom callbacks
- CallbackHttpHandler - HTTP-01 with custom callbacks
- FileHttpHandler - HTTP-01 with file-based webroot
- CallbackTlsAlpnHandler - TLS-ALPN-01 with deployment callbacks
- FileTlsAlpnHandler - TLS-ALPN-01 with file-based certificates
- DnsProviderHandler - Bridge for DNS provider integration
Parallel Processing
- Parallel challenge completion - Speed up multi-domain certificates
- Configurable worker pools - Control concurrency
📦 Installation
pip install acmeow
With optional dependencies:
pip install acmeow[dns-route53] # For AWS Route53 support
pip install acmeow[all] # All optional dependencies
🚀 Quick Start
from acmeow import quick_issue, get_dns_provider, DnsProviderHandler
Using a DNS provider
provider = get_dns_provider("cloudflare", api_token="your-token")
handler = DnsProviderHandler(provider)
Issue certificate in one call
cert, key = quick_issue(
domain="example.com",
email="admin@example.com",
handler=handler,
additional_domains=["www.example.com"],
)
📋 Requirements
- Python 3.10+
- cryptography>=41.0.0
- requests>=2.31.0
📖 Documentation
See the https://github.com/miichoow/ACMEOW#readme for full documentation and examples.
🧪 Testing
- 390 tests passing
- 77% code coverage
- Tested on Python 3.10, 3.11, 3.12, 3.13
- Cross-platform: Linux, macOS, Windows
📄 License
Apache License 2.0