Convert Figma logo to code with AI

smallstep logocertificates

🛡️ A private certificate authority (X.509 & SSH) & ACME server for secure automated certificate management, so you can use TLS everywhere & SSO for SSH.

6,580
429
6,580
192

Top Related Projects

30,851

A tool for secrets management, encryption as a service, and privileged access management

8,649

CFSSL: Cloudflare's PKI and TLS toolkit

48,328

A simple zero-config tool to make locally trusted development certificates with any names you'd like.

5,142

An ACME-based certificate authority, written in Go.

Tools to bootstrap CAs, certificate requests, and signed certificates.

easy-rsa - Simple shell based CA utility

Quick Overview

Smallstep Certificates is an open-source project that provides a private certificate authority (CA) and related tools for secure automated certificate management. It allows organizations to easily deploy and manage their own PKI infrastructure, supporting various protocols and integrations for issuing and renewing X.509 certificates.

Pros

  • Easy to set up and use, with a user-friendly CLI interface
  • Supports automated certificate management and renewal
  • Integrates well with popular tools and services (e.g., Kubernetes, Docker)
  • Provides robust security features, including hardware security module (HSM) support

Cons

  • May require additional configuration for complex environments
  • Documentation could be more comprehensive for advanced use cases
  • Limited GUI options for those who prefer graphical interfaces
  • Steeper learning curve for users unfamiliar with PKI concepts

Code Examples

  1. Initializing a new certificate authority:
step ca init --name "Example CA" --provisioner admin@example.com
  1. Issuing a new certificate:
step ca certificate "example.com" example.crt example.key
  1. Renewing a certificate:
step ca renew example.crt example.key
  1. Revoking a certificate:
step ca revoke --cert example.crt --key example.key

Getting Started

To get started with Smallstep Certificates:

  1. Install the step CLI tool:

    brew install step
    
  2. Initialize a new certificate authority:

    step ca init
    
  3. Start the CA server:

    step-ca $(step path)/config/ca.json
    
  4. Issue your first certificate:

    step ca certificate "example.com" example.crt example.key
    

For more detailed instructions and advanced usage, refer to the official documentation at https://smallstep.com/docs/step-ca.

Competitor Comparisons

30,851

A tool for secrets management, encryption as a service, and privileged access management

Pros of Vault

  • More comprehensive secret management solution, handling various types of secrets beyond just certificates
  • Extensive ecosystem with integrations and plugins for many popular tools and platforms
  • Advanced features like dynamic secrets, leasing, and revocation

Cons of Vault

  • Steeper learning curve due to its broader feature set
  • Higher resource requirements for deployment and maintenance
  • May be overkill for organizations primarily focused on certificate management

Code Comparison

Vault (HCL configuration):

path "secret/data/myapp" {
  capabilities = ["read", "list"]
}

Certificates (JSON configuration):

{
  "root": "root_ca.crt",
  "crt": "intermediate_ca.crt",
  "key": "intermediate_ca.key"
}

Both projects use different configuration formats, with Vault typically using HCL and Certificates using JSON. Vault's configuration often focuses on access control and secret paths, while Certificates' configuration is more centered around certificate-specific details.

Vault offers a more extensive feature set for secret management, making it suitable for larger organizations with diverse security needs. Certificates, on the other hand, provides a more focused solution for certificate management, which may be preferable for smaller teams or those primarily concerned with PKI infrastructure.

8,649

CFSSL: Cloudflare's PKI and TLS toolkit

Pros of cfssl

  • More mature project with longer development history
  • Broader feature set, including OCSP and CRL support
  • Extensive documentation and community support

Cons of cfssl

  • Less active development in recent years
  • More complex setup and configuration process
  • Heavier resource usage for simple certificate management tasks

Code Comparison

cfssl:

cert, err := sign.SignerFromConfig(c)
if err != nil {
    return err
}

certificates:

cert, err := ca.Sign(csr, provisioner, signOpts...)
if err != nil {
    return err
}

Both projects provide Go libraries for certificate management, but certificates offers a more streamlined API for common operations. cfssl's API is more comprehensive but can be more complex to use.

certificates focuses on modern PKI practices and automation, while cfssl offers a wider range of traditional PKI features. certificates is more actively maintained and provides better integration with cloud-native environments.

For simple certificate management tasks, certificates may be easier to set up and use. However, for organizations requiring advanced PKI features or those already using Cloudflare's ecosystem, cfssl might be a better fit.

48,328

A simple zero-config tool to make locally trusted development certificates with any names you'd like.

Pros of mkcert

  • Simpler and more lightweight, focused on local development
  • Easier to use for beginners with minimal configuration
  • Supports a wide range of operating systems and browsers

Cons of mkcert

  • Limited to local development; not suitable for production environments
  • Lacks advanced features like certificate revocation and OCSP stapling
  • Does not support automated certificate renewal

Code Comparison

mkcert:

mkcert -install
mkcert example.com "*.example.com" localhost 127.0.0.1 ::1

certificates:

step ca init
step ca certificate example.com example.com.crt example.com.key

mkcert focuses on simplicity for local development, while certificates offers a more comprehensive solution for both development and production environments. mkcert generates certificates with a single command, whereas certificates requires initialization and separate certificate creation steps.

certificates provides a full-featured certificate authority with advanced capabilities, making it more suitable for complex deployments and production use. However, this comes at the cost of increased complexity and a steeper learning curve compared to mkcert.

Both tools serve different purposes: mkcert excels in quick local setups, while certificates offers a robust, scalable solution for various certificate management needs.

5,142

An ACME-based certificate authority, written in Go.

Pros of Boulder

  • Widely adopted and battle-tested in production environments
  • Supports a broader range of certificate types and use cases
  • Extensive documentation and community support

Cons of Boulder

  • More complex setup and configuration process
  • Higher resource requirements for deployment
  • Steeper learning curve for newcomers

Code Comparison

Boulder (Go):

func (ca *CertificateAuthorityImpl) IssuePrecertificate(ctx context.Context, issueReq *capb.IssueCertificateRequest) (*capb.IssuePrecertificateResponse, error) {
    // Implementation details
}

Certificates (Go):

func (c *CA) Sign(req *api.SignRequest) (*api.SignResponse, error) {
    // Implementation details
}

Both projects are written in Go and provide certificate issuance functionality. Boulder's codebase is more extensive and complex, reflecting its broader feature set. Certificates offers a more streamlined approach, focusing on simplicity and ease of use.

Boulder is the software powering Let's Encrypt, making it a robust choice for large-scale deployments. Certificates, on the other hand, is designed for easier integration into existing systems and workflows, making it more suitable for smaller-scale or custom certificate authority needs.

Tools to bootstrap CAs, certificate requests, and signed certificates.

Pros of certstrap

  • Simpler and more lightweight tool, focused specifically on certificate creation and management
  • Easier to use for basic certificate operations without extensive configuration
  • Faster execution for simple certificate tasks due to its focused nature

Cons of certstrap

  • Limited features compared to certificates, which offers a more comprehensive PKI solution
  • Lacks advanced features like ACME support and HSM integration
  • Not actively maintained, with fewer recent updates and contributions

Code comparison

certstrap:

cert, err := pkix.CreateCertificateAuthority(
    cn, ou, org, country, province, locality, years,
    key, passphrase, crtOut, keyOut,
)

certificates:

ca, err := ca.New(&ca.Options{
    Name:         "My Root CA",
    Subject:      subject,
    Provisioner:  provisioner,
    WithoutClaim: true,
})

Both projects provide Go-based solutions for certificate management, but certificates offers a more extensive API with additional features and flexibility. certstrap focuses on simplicity and ease of use for basic certificate operations, while certificates provides a more comprehensive PKI solution with advanced features like ACME support and HSM integration.

easy-rsa - Simple shell based CA utility

Pros of easy-rsa

  • Widely adopted and well-established in the OpenVPN ecosystem
  • Simple and straightforward for basic PKI management
  • Lightweight and easy to set up for small-scale deployments

Cons of easy-rsa

  • Limited automation capabilities compared to more modern solutions
  • Lacks advanced features like ACME support and HSM integration
  • May require more manual intervention for complex certificate management tasks

Code Comparison

easy-rsa:

./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server server

certificates:

step ca init
step ca certificate "example.com" example.crt example.key
step ca renew example.crt example.key

The easy-rsa script uses a series of commands to initialize the PKI, build a CA, and generate certificates. In contrast, certificates (smallstep) offers a more streamlined approach with fewer commands and built-in support for certificate renewal.

certificates provides a more modern and feature-rich solution for PKI management, including ACME support, HSM integration, and advanced automation capabilities. It's designed for scalability and ease of use in complex environments. However, easy-rsa remains a solid choice for simpler setups and those already invested in the OpenVPN ecosystem.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

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

  • Multiple certificate authorities
  • Active revocation (CRL, OSCP)
  • 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

Installation

See our installation docs here.

Documentation

Feedback?