winget install --id=Smallstep.step-ca -e
A private certificate authority (X.509 & SSH) & ACME server for secure automated certificate management.
step-ca
is an online certificate authority for secure, automated certificate management for DevOps.
It's the server counterpart to the step
CLI tool for working with certificates and keys.
Both projects are maintained by Smallstep Labs.
You can use step-ca
to:
step-ca
is optimized for a two-tier PKI serving common DevOps use cases.
As you design your PKI, if you need any of the following, consider our commerical CA:
See our full feature comparison for more.
You can start a free trial or set up a call with us to learn more.
Questions? Find us in Discussions or Join our Discord.
Website | Documentation | Installation | Contributor's Guide
Setting up a public key infrastructure (PKI) is out of reach for many small teams. step-ca
makes it easier.
There are several ways to authorize a request with the CA and establish a chain of trust that suits your flow.
You can issue certificates in exchange for:
ACME is the protocol used by Let's Encrypt to automate the issuance of HTTPS certificates. It's super easy to issue certificates to any ACMEv2 (RFC8555) client.
Supports the most popular ACME challenge types:
http-01
, place a token at a well-known URL to prove that you control the web serverdns-01
, add a TXT
record to prove that you control the DNS record settls-alpn-01
, respond to the challenge at the TLS layer (as Caddy does) to prove that you control the web serverWorks with any ACME client. We've written examples for:
Get certificates programmatically using ACME, using these libraries:
lego
for Golang (example usage)acme
module for Python (example usage)acme-client
for Node.js (example usage)Our own step
CLI tool is also an ACME client!
See our ACME tutorial for more
step-ca
by using SSH certificates instead of public keys and authorized_keys
filesstep
CLI integrationstep-ca
step-ca
See our installation docs here.
step
command reference is available via step help
,
on smallstep.com,
or by running step help --http=:8080
from the command line
and visiting http://localhost:8080.