Sign inSign up

timothyswan/step-ca

By timothyswan

•Updated 4 months ago

smallstep step-ca certificate authority daemon rebuilt on Red Hat Hardened Images (RHHI)

Image
0

400

timothyswan/step-ca repository overview

⁠step-ca — RHHI rebase

step-ca⁠ is smallstep's certificate authority daemon — runs an internal PKI with ACME, JWK, OIDC, and X5C provisioners, automated renewal, and policy enforcement. This image is rebuilt from source on Red Hat Hardened Images⁠, applying RHHI's hardened base to the upstream binary.

⁠Build
  • Base: hi/go:latest-builder (build) → hi/curl (runtime — see "Daemon container shape" below for why hi/curl, not hi/core-runtime)
  • Source pin: full upstream commit SHA recorded in build.yml
  • Version embedding: -X main.Version=${VERSION} (composed in the Containerfile from the --build-arg VERSION=$VERSION set by the build job; matches upstream Makefile's pattern)
  • Binary name: step-ca
  • CGO disabled, -trimpath, local toolchain only
⁠Supply-chain attestations

Every image tag carries:

  • cosign signature (key-only, no Rekor transparency log)
  • CycloneDX SBOM attached as OCI attestation
  • SLSA v0.2 provenance attached as OCI attestation
⁠Daemon container shape

ENTRYPOINT + CMD match upstream's smallstep/step-ca image so the Ansible role's Quadlet (ansible/roles/step_ca/templates/step-ca.container.j2) can swap sca_image to the rebased version without changing the Exec= line:

  • ENTRYPOINT: /usr/local/bin/step-ca
  • CMD: ["--password-file", "/home/step/secrets/password", "/home/step/config/ca.json"]
  • USER: 65534:65534 (the Quadlet's Volume=...:U remaps the bind-mounted STEPPATH ownership to match)
⁠Operational notes
  • Drop-in replacement for the upstream smallstep image. Runtime base is hi/curl (not the more common hi/core-runtime) specifically so the Ansible role's Quadlet HealthCmd=curl -fsSk https://127.0.0.1:9000/health works inside the rebased image with no operator opt-out — same behavior as upstream smallstep/step-ca. The trade-off is ~30 MB of extra image size for the curl binary + its libs (negligible for a daemon image).
  • Version pin stays in lockstep with the step CLI version pinned in ansible/roles/step_client/defaults/main.yml. Renovate's smallstep release packageRule groups bumps across daemon + client + Ansible image pin.

Tag summary

Content type

Image

Digest

sha256:661e38279…

Size

32.9 MB

Last updated

4 months ago

docker pull timothyswan/step-ca:v0.30.2-rhhi