Overview
This is a repackaged software product wherein additional charges apply for hardening, security configuration, and support.
WHAT IS STEP-CA
step-ca is a private online certificate authority from Smallstep, shipped here as a single statically linked Go binary. It issues short-lived X.509 certificates for internal services over its own REST API and over ACME, so any standard ACME client works against it, including Certbot, acme.sh, lego, Caddy, Traefik and cert-manager. It supports token-based issuance through a JWK provisioner, certificate renewal over mutual TLS, and revocation. All state - issued certificates and ACME accounts - persists in an embedded Badger key-value store on the instance, so there is no database server to run, patch or back up separately. Public certificate authorities will not issue for internal host names or private IP addresses; running your own means real TLS on internal services, on names and lifetimes you choose, with the root key under your control. Apache-2.0 license, no vendor lock-in.
WHAT THIS AMI ADDS
Security hardening:
- Root and intermediate CA keys, and the passwords protecting them, are generated on your own instance at first launch - nothing is baked into the image, so no two deployments share a certificate authority
- Token-based issuance is gated by a 24-character random password generated per instance
- Certificates issued over ACME are capped at a 24 hour lifetime, which keeps renewal automated and limits exposure
- Remote provisioner management is switched off, so no management API is served
- No plaintext listener is configured; TLS 1.2 is the floor and renegotiation is disabled
- The service runs as a dedicated non-root user under a read-only filesystem namespace, with writes limited to its database and log, and only the single capability it needs to bind port 443
- The generated root certificate is installed into the instance trust store, so local tooling trusts the new CA immediately
- UFW firewall pre-configured - inbound limited to SSH on 22 and the CA API on 443
- fail2ban and AppArmor pre-configured
- CVE scan - every image is scanned for vulnerabilities before release
OS hardening (CIS Level 1):
- CIS Ubuntu 24.04 LTS Level 1 benchmark applied via ansible-lockdown
- auditd, SSH hardening, Kernel hardening, IMDSv2 enforced
Compliance artifacts:
- SBOM - CycloneDX 1.6 at /etc/lynxroute/sbom.json
- CIS Conformance Report at /etc/lynxroute/cis-report.html
- CIS Tailored Profile at /usr/share/doc/lynxroute/CIS_TAILORED_PROFILE.md
IMPORTANT - HOW ACME ACCESS IS CONTROLLED
Certificate requests through the token provisioner always require the provisioner password. Certificate requests through ACME are not individually authenticated: anything that can reach port 443 on this instance can be issued a certificate by this CA. Restrict inbound 443 to the networks allowed to enrol, or remove the ACME provisioner with the single command given in the credentials file on the instance.
Highlights
- step-ca security baked in: root and intermediate CA keys generated on your own instance at first launch and never baked into the image, token issuance gated by a 24-character random password unique to the instance, ACME certificates capped at a 24 hour lifetime, no plaintext listener and no management API exposed, UFW firewall pre-configured.
- CIS Level 1 hardened Ubuntu 24.04 LTS: auditd, fail2ban, AppArmor, SSH key-only, IMDSv2 enforced. CVE-scanned before every release. SBOM (CycloneDX) and CIS Conformance Report included.
- Real TLS on internal names: issue certificates for internal host names and private IP addresses that public CAs will not sign, automated through ACME with any standard client. Apache-2.0 license - fully auditable, no vendor lock-in.
Details
Introducing multi-product solutions
You can now purchase comprehensive solutions tailored to use cases and industries.
Features and programs
Financing for AWS Marketplace purchases
Pricing
Free trial
Dimension | Cost/hour |
|---|---|
t3.small Recommended | $0.03 |
t3.large | $0.05 |
t3.medium | $0.05 |
m6i.xlarge | $0.05 |
m6i.large | $0.05 |
Vendor refund policy
We do not offer refunds for this product. AWS infrastructure charges (EC2, EBS, data transfer) are billed separately by AWS and are not refundable by us.
How can we make this page better?
Legal
Vendor terms and conditions
Content disclaimer
Delivery details
64-bit (x86) Amazon Machine Image (AMI)
Amazon Machine Image (AMI)
An AMI is a virtual image that provides the information required to launch an instance. Amazon EC2 (Elastic Compute Cloud) instances are virtual servers on which you can run your applications and workloads, offering varying combinations of CPU, memory, storage, and networking resources. You can launch as many instances from as many different AMIs as you need.
Version release notes
step-ca 0.30.2 - Initial release (August 2026)
- step-ca 0.30.2 on Ubuntu 24.04 LTS, with the step CLI 0.30.6 included
- CIS Level 1 hardening applied (ansible-lockdown/UBUNTU24-CIS)
- CVE-scanned before every release
- Root and intermediate CA keys generated on the instance at first launch, never baked into the image
- Token provisioner gated by a 24-character random password unique to the instance
- ACME provisioner enabled, issued certificates capped at a 24 hour lifetime
- No plaintext listener and no management API exposed; TLS 1.2 floor, renegotiation disabled
- Service runs as a dedicated non-root user with a read-only filesystem namespace
- UFW firewall pre-configured (ports 22, 443 only)
- fail2ban, auditd, AppArmor pre-configured
- SBOM (CycloneDX 1.6) at /etc/lynxroute/sbom.json
- CIS Conformance Report (OpenSCAP) at /etc/lynxroute/cis-report.html
- IMDSv2 enforced
Additional details
Usage instructions
- Launch instance (t3.small recommended)
- Open Security Group - allow TCP 443 from the networks that are allowed to request certificates, and TCP 22 from your IP
- SSH: ssh -i key.pem ubuntu@<PUBLIC_IP>
- Read credentials: sudo cat /root/step-ca-credentials.txt
- Note the CA URL, the root fingerprint, the provisioner password and the ACME directory URL from that file
- On a client machine, install the step CLI and pin this CA by its fingerprint: step ca bootstrap --ca-url https://<PUBLIC_IP> --fingerprint <the fingerprint from the credentials file> --install
- Issue a certificate: step ca certificate myservice.internal myservice.crt myservice.key You will be prompted for the provisioner password.
- Or point any ACME client at the directory URL, for example: certbot certonly --standalone --server https://<PUBLIC_IP>/acme/acme/directory -d myservice.internal
The CA presents its own certificate, issued by its own intermediate, so clients establish trust by pinning the root fingerprint in step 6 rather than by a public trust store. That is expected for a private CA.
Certificate requests through the token provisioner require the provisioner password. Certificate requests through ACME are not individually authenticated - anything that can reach port 443 can be issued a certificate. Restrict inbound 443 accordingly, or remove the ACME provisioner using the command in the credentials file.
Certificates default to a 24 hour lifetime; renew with step ca renew before expiry, or let your ACME client handle it.
All credentials are saved to /root/step-ca-credentials.txt at first launch. Move them into your secret manager and delete the file before production use. For the strongest posture, copy /etc/step-ca/secrets/root_ca_key to offline storage and delete it from the instance - the CA signs with the intermediate key and does not need the root online.
Resources
Vendor resources
Support
Vendor support
Visit us online: https://lynxroute.com
For step-ca documentation:
AWS infrastructure support
AWS Support is a one-on-one, fast-response support channel that is staffed 24x7x365 with experienced and technical support engineers. The service helps customers of all sizes and technical abilities to successfully utilize the products and features provided by Amazon Web Services.
Similar products
