kipuka

EST enrollment server

A Rust implementation of RFC 7030 with multi-CA high availability, hardware security module support, and NIAP CA Protection Profile compliance.

kipuka (Hawaiian) — an area of older land surrounded by younger lava flows, an island of stability. Like a kipuka preserves established growth amid change, this server provides stable certificate enrollment amid evolving security requirements.

Features

Full RFC 7030

All six EST operations: cacerts, simpleenroll, simplereenroll, fullcmc, serverkeygen, and csrattrs. Plus STAR auto-renewal (RFC 8739).

Multi-CA & HA

Active-passive, round-robin, weighted, and latency-based failover strategies across multiple certificate authorities.

HSM Support

PKCS#11 integration with Entrust nShield, Utimaco CryptoServer, Thales Luna, and Kryoptic for dev/test.

NIAP & FIPS

CA Protection Profile v2.0 mapping, FIPS 140-3 via HSM, CA/B Forum Baseline Requirements enforcement.

Post-Quantum Ready

ML-DSA signing (FIPS 204), ML-KEM key encapsulation (FIPS 203), and composite hybrid algorithms.

Flexible Auth

mTLS client certificates, one-time passwords with expiration and use limits, and GSSAPI/Kerberos enterprise SSO.

Multi-Database

SQLite for single-node, PostgreSQL and MariaDB for production. Unified via sqlx Any driver with automatic migrations.

Container-First

Multi-arch OCI images (x86_64 & arm64). Compose profiles for SQLite, PostgreSQL, MariaDB, and HSM development.


Architecture

Clients | TLS + mTLS/OTP | +-------+-------+ | kipuka-est | axum routes, EST protocol +---+---+---+---+ | | | +---------+ | +---------+ | | | kipuka-otp kipuka-hsm kipuka-util OTP lifecycle PKCS#11 shared types HSM ops & config | | | kipuka-dogtag | Dogtag PKI | REST client | +----+----+ kipuka-coap | sqlx | CoAP transport | sqlite | (RFC 7252) | postgres| | mariadb | +---------+

Quick Start

Container

# Pull the image podman pull registry.kipuka.dev/kipuka:latest # Run with your configuration podman run --rm \ -v ./kipuka.toml:/etc/kipuka/kipuka.toml:ro \ -v ./certs:/etc/kipuka/certs:ro \ -p 9443:9443 \ registry.kipuka.dev/kipuka:latest

Build from source

cargo build --release cp kipuka.toml.example kipuka.toml cargo run --release -- --config kipuka.toml

Compliance