PAGES
← all tools
◆ Public Key Infrastructure (PKI)

step CLI

v0.28.4 open-source

CLI tool for building, operating, and automating PKIPKIA framework of policies, roles, and cryptographic standards for issuing and managing digital certificates that bind public keys to identities, letting tools verify authenticity and encrypt communications without pre-shared secrets. systems, X.509X.509A standard defining the format of public-key certificates, maintained by the ITU-T, used by cyber tools to authenticate identities and establish encrypted connections over TLS and similar protocols./SSH certificates, JWTsJWTsJSON Web Tokens — an open standard (RFC 7519) for encoding claims as a signed, optionally encrypted JSON object. Cyber tools use them for stateless authentication without server-side session storage., and OAuth flows.

Summary

step CLI is an open-source command-line tool that builds, operates, and automates Public Key Infrastructure (PKI) systems and workflows. It is licensed under Apache 2.0 and runs as a command-line tool, designed for practitioners needing certificate-management, ACMEACMEAn IETF-standard protocol (RFC 8555) for automating TLS certificate issuance and renewal, letting cyber tools manage certificates without manual CA interaction., or SSH-certificates capabilities. Its documentation positions it alongside tools for general crypto and X.509 operations, and it was first launched in 2016.

CLI tool for building, operating, and automating PKI systems, X.509/SSH certificates, JWTs, and OAuth flows.

How step CLI helps

Is this certificate actually trustworthy and correctly formed before I deploy it?

validates and lints the X.509 certificate against RFC5280 and CA/Browser Forum baseline requirements, flagging fields that would fail elsewhere

Can I get a browser-trusted TLS certificate without standing up my own CA?

requests and retrieves a certificate from Let's Encrypt directly from the command line

Will my system trust the certificates issued by a given CA?

keeps that CA's certificate in, or out of, the system and browser trust store, so trust reflects whatever was last added or removed

What's actually inside this SSH certificate someone handed me?

parses and prints the certificate's identity, principals, and validity period so its claims can be checked before it's relied on

How do I prove two files are identical or that data hasn't been tampered with, without a full PKI?

signs and encrypts the data with the NaCl library and verifies it on the other end

Is this MFA code generator actually going to match what the server expects?

generates and verifies TOTP tokens from a shared secret so both sides can be checked against the same algorithm

all 15 features, with the evidence for each →

Languages

Not documented

Features

15 capabilities · 3 backed by code, an API document or a real run

Built from step CLI's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What step CLI offers you

  • Command-line interface11
  • CI/CD pipeline integration1
  • Plugin API support1
  • Plugin system1
All capabilities 15 capabilities
PKI and certificate lifecycle management verified Build, operate, and automate PKI systems and X.509 certificates, including options for PKIX marshaling format and GCP organization integration. 9 releases · 5 other sources · first seen Jan 2019

Also counts toward: Command-line interface

release 9 total

  • Parse crlEntryExtensions field in CRLs v0.27.4 · Sep 2024 · source · release history
  • Adds options for specifying Azure subscription and object IDs when configuring the Azure provisioner v0.19.0 · Apr 2022 · source · release history
  • Enables generating Azure tokens from managed identities not associated with a specific VM v0.19.0 · Apr 2022 · source · release history
  • Increases the displayed column width for the ACME Account ID in CLI output. v0.18.2 · Mar 2022 · source · release history
  • step admin is now version 1 of the admin workflow CLI v0.16.0 · Jul 2021 · source · release history
  • step ca intermediate create and other related certificate-authority subcommands inherit this behavior, dropping the mandatory output-file flag. v0.15.8 · Mar 2021 · source · release history

docs

  • CLI tool for building, operating, and automating PKI systems, X.509/SSH certificates, JWTs, and OAuth flows.

command line

example

  • Retrieving the list of federated certificate authorities. step ca federation v0.8.3 · Jan 2019 · source
  • Retrieve all trusted root certificates for the CA. step ca roots v0.8.3 · Jan 2019 · source
Certificate lifecycle automation shipped Automate certificate renewal, rekeying, and policy management, including support for expired certificate renewal logic and CA policy auditing. 9 releases · 4 other sources · first seen Apr 2022

Also counts toward: Command-line interface

release 9 total

  • Adds --kms flag support in the ca renew command v0.28.3 · Feb 2025 · source · release history
  • Adds --kms flag support in the ca rekey command v0.28.3 · Feb 2025 · source · release history
  • Adds the --remove-scope flag to remove scope fields from issued certificates. v0.27.5 · Oct 2024 · source · release history
  • Parse crlEntryExtensions field in CRLs v0.27.4 · Sep 2024 · source · release history
  • Enables OCSP and CRL checking in step certificate verify by parsing the relevant extensions from the certificate chain v0.26.2 · Jun 2024 · source · release history
  • The token flow on step ca renew now uses the default token mechanism instead of requiring an explicit token flag, which has been removed. v0.22.0 · Aug 2022 · source · release history

example

  • Rekey a certificate using a KMS-backed key for cryptographic agility. step ca rekey cert.pem cert.key --kms <kms-id> v0.28.3 · Feb 2025 · source
  • Renew a certificate using a KMS-backed key instead of local files. step ca renew cert.pem cert.key --kms <kms-id> v0.28.3 · Feb 2025 · source
  • Issue a certificate without any scope restrictions attached to it. step ca issue example.com example.crt example.key --remove-scope v0.27.5 · Oct 2024 · source
  • List current CA policies to audit permission scopes before deploying new services step ca policy list v0.20.0 · May 2022 · source
Headless and CI authentication flows shipped Support headless operation and automated OAuth flows for use in non-interactive or CI environments. 6 releases · 4 other sources · first seen Apr 2021

Also counts toward: CI/CD pipeline integration, Command-line interface

release

  • STEP_OPEN_BROWSER=false skips launching the default browser during authentication flows v0.28.4 · Mar 2025 · source · release history
  • Adds --console-flow flag to step oauth to select alternative OAuth flows v0.21.0 · Jul 2022 · source · release history
  • The --device flag is removed from step oauth; flow selection is now automatic based on provider v0.21.0 · Jul 2022 · source · release history
  • Allows combining --team and --set flags together in step oauth v0.17.6 · Oct 2021 · source · release history
  • Adds --listen flag to step oauth to override the default listen address v0.17.6 · Oct 2021 · source · release history
  • Adds --redirect-uri flag to step oauth to specify a fixed redirect URI v0.17.6 · Oct 2021 · source · release history

example

  • Run step cli in headless CI environments without opening a browser window STEP_OPEN_BROWSER=false step ca token v0.28.4 · Mar 2025 · source
  • Force a specific redirect URI when running the OAuth flow. step oauth --redirect-uri 'http://localhost:8080/callback' v0.17.6 · Oct 2021 · source
  • Customize the network interface and port for the OAuth listener. step oauth --listen 127.0.0.1:9443 v0.17.6 · Oct 2021 · source
  • Run check-host in CI pipelines where you only care about the exit code, not stdout/stderr details. step ssh check-host --quiet <hostname> v0.15.15 · Apr 2021 · source
SSH certificate management shipped Inspect, verify, and manage SSH host certificates and agent configurations. 7 releases · 2 other sources · first seen Nov 2021

Also counts toward: Command-line interface

release 7 total

  • Adds disableSSHCAUser and disableSSHCAHost attributes to GCP provisioner for fine-grained SSH CA permissions. v0.28.0 · Oct 2024 · source · release history
  • Adds the --console flag to step ssh commands v0.27.2 · Jul 2024 · source · release history
  • Adds --comment flag to step ssh agent for setting a custom comment on SSH keys generated by the agent v0.26.2 · Jun 2024 · source · release history
  • Supports configuring SSH key types (e.g., ed25519, rsa) via step ssh agent options v0.26.2 · Jun 2024 · source · release history
  • Adds step cert inspect to inspect SSH certificates without requiring a type argument v0.20.0 · May 2022 · source · release history
  • Adds the --team flag to step ssh config to enable multi-context SSH configuration generation for teams with subdomain separation. v0.18.0 · Nov 2021 · source · release history

example

  • Connect to a remote host with interactive console mode enabled. step ssh --console <user>@<host> v0.27.2 · Jul 2024 · source
  • Inspect an SSH host certificate to verify its principals and expiry without specifying type step cert inspect ssh_host_cert.pub v0.20.0 · May 2022 · source
Custom certificate templates shipped Generate and modify certificates using custom Go templates and template variables. 4 releases · 2 other sources · first seen Aug 2022

release

  • Adds --template, --template-file, and --json flags to step ca provisioner add to customize certificate generation templates when creating a new provisioner v0.26.2 · Jun 2024 · source · release history
  • Adds --template, --template-file, and --json flags to step ca provisioner update to modify the certificate template of an existing provisioner v0.26.2 · Jun 2024 · source · release history
  • Adds --set and --set-file flags to step certificate create and step certificate sign for injecting template variables. v0.22.0 · Aug 2022 · source · release history
  • Adds --template flag to step certificate create and step certificate sign to use custom Go templates. v0.22.0 · Aug 2022 · source · release history

example

  • Use a custom Go template for certificate SANs when creating a new certificate. step certificate create example.com out.crt out.key --template '{{ .SANs }}' v0.22.0 · Aug 2022 · source
  • Inject environment-specific values into a certificate CSR using template variables. step certificate create example.com out.crt out.key --set "env=prod" --set-file vars.json v0.22.0 · Aug 2022 · source
JWT and JWS signing verified Sign JWTs and JWS tokens with support for x5t and x5c certificate header claims, including certificate chain validation via trusted roots. 1 release · 4 other sources · first seen Jul 2021

Also counts toward: Command-line interface

release

  • Adds support for the --x5c-insecure flag in step ca token to generate tokens with the x5cInsecure header set v0.19.0 · Apr 2022 · source · release history

command line

example

  • Validate a certificate and ensure it hasn't expired before processing. step cert inspect <path-to-cert> --check-expiration v0.16.0 · Jul 2021 · source
Passwordless decryption and key input shipped Provide secure methods for password input via file rather than CLI arguments to avoid shell history exposure. 4 releases · 1 other source · first seen Apr 2021

Also counts toward: Command-line interface

release

  • Adds --password-file flag to step crypto jwe decrypt to specify a file containing the decryption password v0.25.1 · Nov 2023 · source · release history
  • Adds --password-file flag to step ca sign to allow password input via file for offline mode v0.21.0 · Jul 2022 · source · release history
  • Adds --provisioner-password-file argument to the proxycommand subcommand for supplying provisioner passwords via file instead of stdin or prompt. v0.18.2 · Mar 2022 · source · release history
  • Adds --quiet option to step ssh check-host to suppress verbose output v0.15.15 · Apr 2021 · source · release history

example

  • Decrypt a JWE payload using a password stored in a file, avoiding shell history exposure. step crypto jwe decrypt --password-file /run/secrets/jwe_password encrypted.jwt v0.25.1 · Nov 2023 · source
Certificate inspection and fingerprinting shipped Inspect certificates, inspect SSH host certificates without type specification, and retrieve fingerprints from standard input. 3 releases · 1 other source · first seen Jul 2021

release

  • step certificate fingerprint now allows piped or redirected input v0.27.4 · Sep 2024 · source · release history
  • Adds optional SHA1 fingerprint output to step certificate inspect via the new --sha1 flag v0.19.0 · Apr 2022 · source · release history
  • Adds new Go function to check a certificate's public key v0.16.0 · Jul 2021 · source · release history

example

  • Get the fingerprint of a certificate from standard input without creating a temp file. cat cert.pem | step certificate fingerprint - v0.27.4 · Sep 2024 · source
KMS integration for cryptographic agility shipped Use Key Management Service providers for signing, creating, renewing, and rekeying certificates via a plugin architecture. 3 releases · 1 other source · first seen Aug 2022

Also counts toward: Command-line interface, Plugin API support, Plugin system

release

  • Adds initial support for executing command plugins in step. v0.22.0 · Aug 2022 · source · release history
  • Adds KMS support to step certificate create and step certificate sign via the new KMS signer plugin architecture. v0.22.0 · Aug 2022 · source · release history
  • Adds --timeout flag (default 15 minutes) to control plugin execution timeout. v0.22.0 · Aug 2022 · source · release history

example

  • Sign a certificate using a KMS provider via the plugin system. step certificate sign ca.crt ca.key out.crt --kms <kms-type> v0.22.0 · Aug 2022 · source
Identity and claim customization shipped Specify custom identity, scope restrictions, and JWT claims in issued certificates and tokens. 1 release · 1 other source · first seen Mar 2025

Also counts toward: Command-line interface

release

  • step ca token now supports a custom user claim via --user flag v0.28.4 · Mar 2025 · source · release history

example

  • Issue a certificate with a specific user identity in the JWT payload step ca token --user my-service <sub-claim> <path-to-csr> v0.28.4 · Mar 2025 · source
Random number generation shipped Generate random numbers and byte sequences for use in scripts or tests. 1 release · 1 other source · first seen Nov 2023

Also counts toward: Command-line interface

release

  • Adds the step rand subcommand for generating random numbers v0.25.1 · Nov 2023 · source · release history

example

  • Generate 16 random bytes directly from the CLI for use in scripts or tests. step rand 16 v0.25.1 · Nov 2023 · source
PKCS#8 key format support shipped Export cryptographic keys in PKCS#8 format for interoperability with other systems. 2 releases · first seen Jan 2019

Also counts toward: Command-line interface

release

  • Adds --check-expiration flag to verify certificate expiry during validation v0.16.0 · Jul 2021 · source · release history
  • step crypto key format now supports PKCS#8 output v0.8.3 · Jan 2019 · source · release history
Private key encryption verified Encrypt private keys with password protection, including the ability to enforce a minimum password length. 1 other source · first seen Mar 2025

command line

  • --min-password-length — Set minimum required length for password used to encrypt private key. The default value is '0'. Values <=0 are interpreted as if no minimum value is set. v0.28.4 · Mar 2025 · command-line history
Stdin certificate processing shipped Allow certificates to be passed via stdin for renewal checks and fingerprinting. 1 release · first seen Jun 2024

release

  • Allows passing a certificate directly via stdin to step ca needs-renewal using - as the file argument v0.26.2 · Jun 2024 · source · release history
Context and authority management shipped Manage named profiles, contexts, and certificate authority bootstrap configurations via helper commands. 1 release · first seen Nov 2021

Also counts toward: Command-line interface

release

  • Adds context set, context select, context remove, and ca bootstrap helper commands to manage named profiles and authorities. v0.18.0 · Nov 2021 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for step CLI, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail step CLI puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Website history

smallstep.com, every change

Smallstep's home page and 10 more pages as they looked each month from September 2021 to October 2026: 25 renders, 4 changes of tagline or palette. Step through them, play them, or put any two months side by side.

Website history is included with Researcher and Business.

See plans →

Releases

Show

19 entries

  1. March 20251
  2. February 20251
  3. October 20242
  4. September 20241
  5. July 20241
  6. June 20241
  7. November 20231
  8. August 20221
  9. July 20221
  10. May 20221
  11. April 20221
  12. March 20221
  13. November 20211
  14. October 20211
  15. July 20211
  16. April 20211
  17. March 20211
  18. January 20191
    Show

    19 entries

    Project health

    Issue, contributor and maintainer activity in smallstep/cli, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 7 −5 vs prior 12 months
    2. Maintainers 4 +2 joined · −1 left, last 12 months
    3. Bus factor 2 committers behind half the commits
    4. Community-filed 96% of issues opened, last 12 months
    5. Median time to close 57 days first maintainer reply 10 days
    6. Open backlog 154 of 499 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 154
    3. Contributors / month 1
    4. Commits / month 4
    5. Stars 4,330
    Issue themes, last 12 months
    • bugs 50%
    • features 41%
    • other 9%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Libraries its release ships

    What its latest release locks, checked against known advisories.

    None of its release's images build from a lockfile we can read.

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →