AcmeX
AcmeX is a modular, enterprise-grade ACME v2 (RFC 8555) client and server ecosystem written in Rust. It is designed for high performance, reliability, and extensibility, supporting various DNS providers, storage backends, and cryptographic libraries.
🏗 Architecture
AcmeX follows a layered design to ensure separation of concerns and ease of maintenance:
- Application Layer: CLI and REST API (Axum-based) entry points.
- Orchestration Layer: High-level workflow management for provisioning, validation, and renewal.
- Scheduling Layer: Task execution and concurrency management.
- Protocol Layer: Low-level ACME implementation (JWS, Nonce management, Directory).
- Storage Tier: Pluggable backends (File, Redis, Memory, Encrypted).
- Certificate Tier: Chain verification, CSR generation, and OCSP status checking.
🚀 Key Features
- Full ACME v2 Support: Complete implementation of RFC 8555.
- Asynchronous Execution: Non-blocking task polling for long-running operations.
- Multiple Challenge Types: Support for
HTTP-01,DNS-01, andTLS-ALPN-01. - Extensive DNS Support: Built-in providers for Cloudflare, AWS Route53, Alibaba Cloud, Azure, and more.
- Flexible Storage: Support for local files, Redis, and encrypted storage.
- Observability: Integrated metrics (Prometheus), structured logging (Tracing), and OpenTelemetry support.
- Security First: Memory safety via Rust,
zeroizefor sensitive data, and RFC 7807 error reporting.
🛠 Installation
Add AcmeX to your Cargo.toml:
[]
= "0.7.0"
📖 Quick Start
use *;
async
🛠 Development
Prerequisites
- Rust 1.75+
- Docker (for Redis/Testing)
Running Tests
📄 Documentation
Detailed documentation is available in the docs directory:
📜 License
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.