skillfed

acme

ACME protocol implementation in Python

acme v5.7.0 6.4M downloads/30d#1,917 on PyPI33,201
Permissive license Apache-2.0 Active released

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 acme

uv

uv add acme

poetry

poetry add acme

Installing 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

Development Status :: 5 - Production/StableIntended Audience :: DevelopersProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Internet :: WWW/HTTPTopic :: Security

Tags

ACME protocol clientLet's Encrypt certificate automationTLS certificate provisioningautomated certificate renewalACME certificate managementdomain validation automationcertificate authority integration
certificate-automationacme-protocollets-encrypt

More WWW/HTTP packages