ironroot-admin¶
ironroot-admin is the trusted operator CLI. Use it from secure operator workstations for bootstrap, CA management, token creation, security checks, and migration workflows.
Root CA Creation¶
Beginner mode:
ironroot-admin ca create-root \
--name "IronRoot Local Root CA" \
--out .localdev/pki/root
Advanced mode:
ironroot-admin ca create-root \
--name "IronRoot Production Root CA" \
--common-name "IronRoot Root CA" \
--organization "IronRoot" \
--organizational-unit "Security" \
--country "DK" \
--province "Hovedstaden" \
--locality "Copenhagen" \
--algorithm ecdsa \
--curve p384 \
--rsa-bits 4096 \
--validity 20y \
--max-path-length 1 \
--key-password-env ROOT_CA_PASSWORD \
--encrypt-key \
--crl-enabled \
--ocsp-enabled \
--allow-server-auth=false \
--allow-client-auth=false \
--allow-code-signing=false \
--allow-email-protection=false \
--offline \
--out ./pki/root
Root CA Flags¶
| Argument | Default | Description | Recommendation |
|---|---|---|---|
--name |
IronRoot Local Root CA |
Friendly Root CA name. | Use a clear environment-specific name. |
--common-name |
value of --name |
Certificate subject CN. | Keep stable for the trust domain. |
--organization |
IronRoot |
Subject organization. | Set to your org for production. |
--organizational-unit |
empty | Subject OU. | Optional security/team label. |
--country |
empty | Subject country code. | Optional. |
--province |
empty | Subject state/province. | Optional. |
--locality |
empty | Subject locality/city. | Optional. |
--algorithm |
ecdsa |
Root private key algorithm. | Use ecdsa unless policy requires RSA. |
--rsa-bits |
4096 |
RSA size when --algorithm rsa. |
Use 4096 for Root CAs. |
--curve |
p384 |
ECDSA curve. | Use p384 for Root CAs. |
--key-format |
pkcs8 |
Private key encoding. | Keep pkcs8. |
--encrypt-key |
true |
Encrypt private key at rest. | Keep enabled. |
--key-password |
empty | Password value. | Avoid in shell history for production. |
--key-password-env |
empty | Password environment variable. | Prefer for automation. |
--key-password-file |
empty | Password file. | Use only with strict permissions. |
--validity |
20y |
Root CA lifetime. | 20 years with planned migration. |
--not-before |
now minus one minute | RFC3339 start time. | Usually omit. |
--max-path-length |
1 |
CA depth below Root. | Keep 1 for Root → Intermediate → leaf. |
--is-ca |
true |
Marks certificate as a CA. | Must stay true. |
--allow-cert-signing |
true |
Allows signing Intermediate CAs. | Keep enabled. |
--allow-crl-signing |
true |
Allows CRL signing. | Keep enabled for revocation readiness. |
--allow-server-auth |
false |
Adds serverAuth EKU. | Keep disabled for Root CAs. |
--allow-client-auth |
false |
Adds clientAuth EKU. | Keep disabled for Root CAs. |
--allow-code-signing |
false |
Adds codeSigning EKU. | Keep disabled unless designing a separate CA. |
--allow-email-protection |
false |
Adds emailProtection EKU. | Keep disabled unless designing a separate CA. |
--generate-trust-bundle |
true |
Writes public trust bundle. | Keep enabled. |
--pem |
true |
Writes PEM certificate export. | Keep enabled. |
--der |
true |
Writes DER certificate export. | Useful for some trust stores. |
--offline |
true |
Records offline custody intent. | Keep enabled for production. |
--backup-reminder |
true |
Writes recovery reminders. | Keep enabled. |
--crl-enabled |
false |
Future CRL metadata. | Enable when planning CRL operations. |
--ocsp-enabled |
false |
Future OCSP metadata. | Enable when planning OCSP operations. |
--permit-dns |
empty | DNS name constraints. | Advanced only. |
--permit-ip |
empty | IP CIDR name constraints. | Advanced only. |
--permit-email |
empty | Email name constraints. | Advanced only. |
--out |
./pki/root |
Output directory. | Use an offline storage path in production. |
Inspect CA Material¶
ironroot-admin ca inspect --output table ./pki/root/root-ca.crt
ironroot-admin ca inspect --output markdown ./pki/root/root-ca.crt
ironroot-admin ca inspect --output json ./pki/root/root-ca.crt
Common Commands¶
ironroot-admin ca create-intermediate --root-cert ./pki/root/root-ca.crt --root-key ./pki/root/root-ca.key --out ./pki/intermediate
ironroot-admin bootstrap --config ./examples/config.local.yaml
ironroot-admin --config ./examples/config.local.yaml create-token --host local-demo --ttl 24h
ironroot-admin --config ./examples/config.local.yaml list-tokens
ironroot-admin --config ./examples/config.local.yaml inspect-token <token-id>
ironroot-admin --config ./examples/config.local.yaml revoke-token <token-id>
ironroot-admin security-check --config ./examples/config.local.yaml
Bootstrap Token Operations¶
create-token prints the token secret once and stores only a hash in the database. list-tokens and inspect-token never print token secrets.
ironroot-admin --config ./examples/config.local.yaml list-tokens --active
ironroot-admin --config ./examples/config.local.yaml list-tokens --host demo.local --wide
ironroot-admin --config ./examples/config.local.yaml list-tokens --json
ironroot-admin --config ./examples/config.local.yaml list-tokens --markdown
Token statuses are:
| Status | Meaning |
|---|---|
active |
Token is unexpired, not revoked, and unused. |
used |
Token has created at least one enrollment. |
expired |
Token is past expires_at. |
revoked |
Token was explicitly revoked. |