Correct issuance-path guidance: profiles for fleets, subscribers are per-identity #19
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up to #18. The subscriber guidance that PR shipped was wrong for fleet enrollment, and this corrects it.
What was wrong
#18 recommended
-PkiSubscriberSlugas "preferred for most setups" and showed an example that grabs the first subscriber then passes the local machine's ownCommonName. That fails on every machine whose name is not that subscriber's CN.From
pki-subscriber-service.tssignSubscriberCert:It also allowlists SANs (every
dNSName/emailSAN in the CSR must appear insubscriber.subjectAlternativeNames) and requires CSR key usages to be a subset of the subscriber's. A subscriber is a single named identity, so enrolling N machines would require N subscribers.The correct guidance
Certificate profiles are the fleet path. They take a per-request common name constrained by policy
allowed/required/deniedlists, and profile issuance is the only path that skips the CA direct-issuance gate:So
-CertificateProfileIdissues successfully against a CA whoseEnableDirectIssuanceisFalse.Direct issuance cannot be toggled
Also documented, because it is not discoverable:
enableDirectIssuanceappears in no Infisical create or update schema. The generic CA schemas accept onlynameandstatus, and none ofgeneral-certificate-authority-router.ts,internal-certificate-authority-router.ts, orcertificate-authority-endpoints.tsreference it. There is no UI toggle and no API field.A CA can read
Falsefor a non-obvious reason. Migration20250521110635_add-external-ca-pki.tsrenamed the olderrequireTemplateForIssuancecolumn and inverted every existing value:Any CA that previously required a template now reads
EnableDirectIssuance = Falsepermanently. The remedies are a profile, or a new CA (the column defaults totrue).Changes
-Ttlrestored.Request-InfisicalCertificateandGet-InfisicalCertificateAuthorityupdated to match.Docs only, no behavior change. 268/268 tests pass; full
build.ps1 -RunTestsgreen including module import, manifest, and help validation.Co-Authored-By: Claude Opus 5 noreply@anthropic.com
Generated with Claude Code