Skip to content

Smallstep Step-CA

Integrate Smallstep Step-CA with SSL-CLM to:

  • Issue certificates
  • Revoke certificates
  • Sync certificate inventory
  • Use secure JWK-based authentication
  • Enable internal private PKI automation

Step-CA integrates directly using its REST API.
No Windows Agent is required.


SSL-CLM Platform
│ (HTTPS + JWK signed tokens)
Smallstep Step-CA
Internal Certificate Authority

SSL-CLM authenticates using a JWK Provisioner Private Key.


Install Smallstep CLI on your CA server:

https://smallstep.com/docs/step-cli/installation

Verify:

Terminal window
step version

Create a password file:

step-ca-password.txt

Example:

123

Initialize CA:

Terminal window
step ca init ^
--name "QCecuring Internal CA" ^
--dns step-ca-local.qcecuring.com ^
--address :9000 ^
--provisioner clm@qcecuring.com ^
--password-file step-ca-password.txt

This creates:

  • Root certificate
  • Intermediate certificate
  • Default provisioner
  • CA configuration
  • PKI directory

Start Step-CA:

Terminal window
step-ca $(step path)/config/ca.json

Default API:

https://step-ca-local.qcecuring.com:9000

We separate provisioners for security.

Used for manual certificate issuance.

Remove default:

Terminal window
step ca provisioner remove admin@qcecuring.com

Recreate as JWK:

Terminal window
step ca provisioner add admin@qcecuring.com --type JWK --create

Test:

Terminal window
step ca certificate google.com google.pem google.key \
--provisioner admin@qcecuring.com

Provisioner 2 — CLM (Platform Integration)

Section titled “Provisioner 2 — CLM (Platform Integration)”

Used by SSL-CLM.

Remove existing:

Terminal window
step ca provisioner remove clm@qcecuring.com

Create JWK keypair:

Terminal window
step crypto jwk create clm-pub.json clm-priv.json \
--kty EC \
--crv P-256 \
--no-password \
--insecure

Add provisioner:

Terminal window
step ca provisioner add clm@qcecuring.com ^
--type JWK ^
--public-key clm-pub.json

Verify:

Terminal window
step ca provisioner list

Step 4 — Extract Private Key for SSL-CLM

Section titled “Step 4 — Extract Private Key for SSL-CLM”

The platform requires the JWK private key.

Terminal window
type clm-priv.json

This JSON will be used inside SSL-CLM connector configuration.

⚠️ Store securely.


Step 5 — Create Connector Config in SSL-CLM

Section titled “Step 5 — Create Connector Config in SSL-CLM”

Navigate:

Configuration → Connector Configs → New Connector

Select:

  • Vendor: Smallstep (Local CA)
  • Type: API CA

Configuration JSON:

{
"provisionerName": "clm@qcecuring.com",
"baseUrl": "https://step-ca-local.qcecuring.com:9000",
"provisionerKeyId": "<kid-from-jwk>",
"provisionerJwk": {
"kty": "EC",
"crv": "P-256",
"kid": "<kid>",
"x": "<x>",
"y": "<y>",
"d": "<d>"
}
}

Step CA Connector Config

Secrets are stored securely in backend vault.

Save connector.


Step 6 — Create Certificate Authority Instance

Section titled “Step 6 — Create Certificate Authority Instance”

Navigate:

Discovery → Certificate Authorities → New Certificate Authority

Select:

  • Type: Smallstep CA
  • Connector Config: Smallstep CA Config Local 1
  • Refresh Interval: 24 hours

Step CA Connector Config

Save.


Click:

Load Templates

SSL-CLM will:

  • Call Step-CA API
  • Retrieve provisioners
  • Sync certificate capabilities

Navigate:

Enrollment → Guided CSR

Select:

  • Certificate Authority
  • Subject details
  • SAN entries

Submit.

Flow:

  1. CSR stored in SSL-CLM
  2. API call made to Step-CA
  3. JWK token signed
  4. Certificate issued
  5. Stored in platform

Status becomes:

Issued

When revocation requested:

  • Platform calls Step-CA revoke API
  • Status updated in SSL-CLM
  • Next refresh sync confirms revocation

  • JWK signed tokens
  • No password-based auth
  • Key-based API access
  • Enable HTTPS with trusted certificate
  • Restrict CA port exposure
  • Store JWK private key in vault
  • Rotate provisioner keys periodically

  • Check provisioner name
  • Verify kid matches public key
  • Confirm private key is correct
  • Confirm Step-CA running
  • Verify port 9000 open
  • Check DNS resolution

Run:

Terminal window
step ca provisioner list

Ensure clm@qcecuring.com exists.


  • Separate admin and automation provisioners
  • Use EC P-256 keys
  • Restrict JWK usage scope
  • Enable scheduled inventory refresh
  • Backup PKI directory