certificates is a free, open source data security & privacy project written in Go and released under Apache-2.0. It has 8,878 GitHub stars, 594 forks and 299 open issues, and was last pushed 36 hours ago. On this registry it ranks #7 of 22 tracked projects in Data Security & Privacy, with 5 head-to-head comparisons available.

What is certificates?

step-ca is an open-source online certificate authority that issues X.509 and SSH certificates and runs as an ACME server, built for DevOps teams that need automated certificate management without a commercial PKI contract.

What it is

step-ca is an online certificate authority for secure, automated certificate management, written in Go and maintained by Smallstep Labs. It is the server counterpart to the step command-line tool, and the two are designed to be used together when working with certificates and keys. It lives in the public key infrastructure (PKI) ecosystem, alongside and in place of the certificate authority services that teams would otherwise assemble themselves or buy: it is the thing that signs, renews, and distributes certificates rather than a client that merely consumes them.

The concrete problem it solves is that standing up a PKI is out of reach for many small teams. Certificate issuance and renewal is manual, short-lived certificates are impractical without automation, and SSH access tends to rely on static keys copied between hosts. step-ca replaces that manual issuance and key distribution with an automated authority that issues HTTPS server and client certificates, TLS certificates for DevOps workloads, and SSH certificates for both people and hosts.

Key capabilities

  • Issues HTTPS server and client certificates that work in browsers, following RFC 5280 and CA/Browser Forum baseline requirements.
  • Runs as an ACME server supporting all popular ACME challenge types, so existing ACME clients can enrol against it.
  • Issues SSH certificates for people in exchange for single sign-on identity tokens, and for hosts in exchange for cloud instance identity documents.
  • Issues TLS certificates for VMs, containers, APIs, database connections, and Kubernetes pods.
  • Supports short-lived certificates with automated enrolment, renewal, and passive revocation, and lets the operator choose key types (RSA, ECDSA, EdDSA) and lifetimes.
  • Can operate as an online intermediate CA for an existing root CA instead of acting as a root.
  • Ships a Go wrapper for programmatic client usage and works with the step command-line client for scripting; storage backends include Badger and BoltDB.

Who uses it and how

  • DevOps teams that need TLS everywhere without an operations-heavy PKI, including certificate issuance for VMs, containers, APIs, and database connections.
  • Teams replacing static SSH keys with SSH certificates: people get certificates from their SSO identity, hosts get certificates from cloud instance identity documents.
  • Platform and Kubernetes operators issuing short-lived certificates to pods on automated enrolment and renewal cycles.
  • Organisations with an existing root CA that want step-ca as an online intermediate CA, keeping the root offline.
  • Engineers who automate issuance from scripts through the step CLI or the Go wrapper instead of clicking through a UI.

Getting started

Installation is documented at smallstep.com/docs/step-ca/installation, and step-ca is normally paired with the step command-line client at github.com/smallstep/cli for enrolment and certificate operations. Smallstep's hosted website at smallstep.com/certificates is the project's entry point for documentation and downloads.

How it compares

step-ca is Apache-2.0 licensed and self-hosted, while Smallstep's commercial CA is a paid product targeting the same PKI space. The commercial offering adds capabilities step-ca does not include: multiple certificate authorities, active revocation via CRL and OCSP, a turnkey high-volume high-availability CA, an API for infrastructure-as-code management of the PKI, SCEP and NDES support for migrating from Active Directory Certificate Services, device identity with Secure Enclave and TPM 2.0 attestation, a web admin UI, ACME External Account Binding, identity provider integration, role-based access control, FIPS-compliant software, and HSM-bound private keys. step-ca is optimised for a two-tier PKI covering common DevOps use cases, and the trade is a free permissive licence and full data ownership in exchange for operating the CA and giving up those enterprise features.

When to use it โ€” and when not to

Choose step-ca when a small team needs a working private CA with ACME, SSH certificates, and short-lived certificate automation, and is willing to run the CA process and its storage backends (Badger or BoltDB) and protect the signing keys themselves. Do not choose it if the requirement is active revocation with CRL or OCSP, multiple certificate authorities, turnkey high availability at volume, SCEP or NDES migration, MDM-driven enrolment, or FIPS and HSM key binding โ€” those are commercial-edition features. The project is also strictly a two-tier PKI design, and with 299 open issues and a README that documents features more than it documents operations, a prospective self-hoster should read the installation docs before committing.

project readme (upstream, from github) โ€” read inline

step-ca

GitHub release Go Report Card Build Status License CLA assistant

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:

  • Issue HTTPS server and client certificates that work in browsers (RFC5280 and CA/Browser Forum compliance)
  • Issue TLS certificates for DevOps: VMs, containers, APIs, database connections, Kubernetes pods...
  • Issue SSH certificates:
    • For people, in exchange for single sign-on identity tokens
    • For hosts, in exchange for cloud instance identity documents
  • Easily automate certificate management:

Comparison with Smallstep's commercial product

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 commercial CA:

  • Multiple certificate authorities
  • Active revocation (CRL, OCSP)
  • Turnkey high-volume, high availability CA
  • An API for seamless IaC management of your PKI
  • Integrated support for SCEP & NDES, for migrating from legacy Active Directory Certificate Services deployments
  • Device identity โ€” cross-platform device inventory and attestation using Secure Enclave & TPM 2.0
  • Highly automated PKI โ€” managed certificate renewal, monitoring, TPM-based attested enrollment
  • Seamless client deployments of EAP-TLS Wi-Fi, VPN, SSH, and browser certificates
  • Jamf, Intune, or other MDM for root distribution and client enrollment
  • Web Admin UI โ€” history, issuance, and metrics
  • ACME External Account Binding (EAB)
  • Deep integration with an identity provider
  • Fine-grained, role-based access control
  • FIPS-compliant software
  • HSM-bound private keys

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

Features

๐Ÿฆพ A fast, stable, flexible private CA

Setting up a public key infrastructure (PKI) is out of reach for many small teams. step-ca makes it easier.

โš™๏ธ Many ways to automate

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:

๐Ÿ” Your own private ACME server

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.

๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿ’ป An online SSH Certificate Authority

  • Delegate SSH authentication to step-ca by using SSH certificates instead of public keys and authorized_keys files
  • For user certificates, connect SSH to your single sign-on provider, to improve security with short-lived certificates and MFA (or other security policies) via any OAuth OIDC provider.
  • For host certificates, improve security, eliminate TOFU warnings, and set up automated host certificate renewal.

๐Ÿค“ A general purpose PKI tool, via step CLI integration

readme truncated โ€” read the full docs on github

Frequently asked questions

Is certificates free to use?

certificates is open source under the Apache-2.0 licence. There is no licence fee and no seat count โ€” you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does certificates do?

๐Ÿ›ก๏ธ A private certificate authority (X.509 & SSH) & ACME server for secure automated certificate management, so you can use TLS everywhere & SSO for SSH.

What is certificates written in?

certificates is primarily written in Go. Its source is publicly available at https://github.com/smallstep/certificates, and it has 8,878 GitHub stars.