acme
ACME protocol implementation in Python
What it is and what it does
ACME is a Python implementation of the ACME protocol (RFC 8555), the standard used by Let's Encrypt and other certificate authorities to automate the issuance and renewal of TLS certificates. It handles the cryptographic handshake and domain validation flow required to prove control of a domain and obtain a certificate from an ACME-compliant CA.
The package is primarily used as the backend for Certbot, the EFF's command-line tool, but can also be imported and used programmatically by applications that need to automate certificate provisioning. It manages the full lifecycle of certificate requests, including challenge responses, certificate retrieval, and revocation. It depends on cryptography for cryptographic operations, PyOpenSSL for certificate handling, requests for HTTP communication, and josepy and pyrfc3339 for ACME-specific protocol details.
Use it for:
- Automate TLS certificate provisioning and renewal for web servers without manual intervention.
- Build custom certificate management tools that integrate with Let's Encrypt or other ACME CAs.
- Implement domain validation workflows in applications that need to prove control of domains.
- Revoke or manage certificates programmatically as part of infrastructure automation.
- Support multi-domain and wildcard certificate issuance through ACME challenge automation.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Implements the ACME protocol to automate certificate provisioning and renewal from Let's Encrypt and other ACME-compliant certificate authorities.
Yes. This is a production-stable (Development Status 5), actively maintained package with no known vulnerabilities, low install friction, and permissive licensing. Install it if you need to automate certificate provisioning from Let's Encrypt or other ACME services, either as part of Certbot or as a library for custom certificate management workflows. The only caveat is that it requires Python 3.10+ and is designed for server-side use, not client machines.
Install
acme on PyPI
pip
pip install acmeuv
uv add acmepoetry
poetry add acmeInstalling acme
Before you install
Low friction installation with a pure-Python wheel. Actively maintained with a release within 30 days and last commit on 2026-08-12. Depends on five well-established runtime packages: cryptography, josepy, PyOpenSSL, pyrfc3339, and requests.
License in practice
Licensed under Apache-2.0 (permissive), allowing use in commercial and private projects with minimal restrictions beyond attribution and liability disclaimers.
Quickstart
pip install acme
from acme import client
from acme import messages
# Instantiate a client and interact with an ACME server
my_client = client.ClientV2(directory_url, net=net_obj)
Requires Python 3.10 or later. Typically run on a web server with direct access to domain control; not designed for personal computers or hosted environments without certificate upload capability.
Verify before relying
- Whether the package is suitable for programmatic use in applications versus command-line-only operation (description emphasizes Certbot CLI tool).
- Specific ACME server compatibility beyond Let's Encrypt (description mentions 'other ACME compliant services' but does not detail which ones).
- Whether certificate installation/deployment is handled by this package or delegated to separate plugins.
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 5 — cryptography, josepy, PyOpenSSL, pyrfc3339, requests |
| Maintenance | actively maintained — 30 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 6,392,096/month — #1,917 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: acme-5.7.0-py3-none-any.whl
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
certbotCertbot is a command-line client that…
permissive · top 15,000 on PyPI
certbot-dns-cloudflareAutomates DNS validation for Let's Encrypt…
permissive · top 5,000 on PyPI
certbot-nginxCertbot-nginx is a plugin for Certbot that…
permissive · top 15,000 on PyPI
certbot-dns-route53A Certbot plugin that automates DNS validation…
permissive · top 15,000 on PyPI
certbot-dns-directadminA Certbot plugin that automates DNS-01…
unclear · top 15,000 on PyPI
certbot-dns-multiA Certbot DNS plugin that automates ACME DNS…
permissive · top 15,000 on PyPI
trustmetrustme generates fake TLS certificates and…
permissive · top 5,000 on PyPI
pemParses and splits PEM files (Base64-encoded DER…
permissive · top 5,000 on PyPI
aws-cdk.aws-certificatemanagerProvides AWS CDK Constructs for provisioning…
permissive · top 15,000 on PyPI
certbot-dns-duckdnsA certbot plugin that automates DNS-01…
permissive · top 15,000 on PyPI