Skip to content

Added/updated host identity contributor docs. - #30651

Merged
getvictor merged 2 commits into
mainfrom
victor/30458-host-identity-docs
Jul 11, 2025
Merged

Added/updated host identity contributor docs.#30651
getvictor merged 2 commits into
mainfrom
victor/30458-host-identity-docs

Conversation

@getvictor

@getvictor getvictor commented Jul 8, 2025

Copy link
Copy Markdown
Member

Fixes #30458

Summary by CodeRabbit

  • Documentation
    • Updated terminology and clarified details for TPM-backed HTTP signing, including alternate names, TPM ECC curve selection, and file naming conventions.
    • Added documentation for a new API endpoint to retrieve host identity certificates via SCEP, specifying supported algorithms and usage requirements.
    • Improved configuration guidance, troubleshooting steps, and expanded the list of planned future enhancements.

@coderabbitai

coderabbitai Bot commented Jul 8, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

The documentation was updated to clarify and expand details about the TPM-backed HTTP signing feature, now also called "Fleet host identity." It documents a new SCEP endpoint for host identity certificate retrieval, provides revised details on TPM ECC curve selection and file naming, and outlines additional configuration and troubleshooting steps.

Changes

File(s) Change Summary
docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md Clarified alternate naming, ECC curve selection, file naming, Content-Type header, configuration, server behavior, future enhancements, and troubleshooting steps.
docs/Contributing/reference/api-for-contributors.md Added documentation for new /api/fleet/orbit/host_identity/scep endpoint, certificate requirements, and SCEP challenge details.

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant FleetServer

    Client->>FleetServer: GET /api/fleet/orbit/host_identity/scep (with enrollment secret)
    FleetServer->>FleetServer: Validate enrollment secret
    FleetServer->>FleetServer: Generate host identity certificate (ECC P-384 or P-256)
    FleetServer->>Client: Return certificate (CN = hardware UUID or osquery identity)
Loading

Assessment against linked issues

Objective Addressed Explanation
Document new SCEP endpoint in contributor API (#30458)
Document supported certs: ECC NIST P-384, ECC NIST P-256 (#30458)
Document SCEP challenge as enrollment secret (#30458)
Clarify certificate CN requirements and single valid cert per host (#30458)
Document that the new CA is separate from Apple MDM certs and other storage/DB details (#30458) Storage/DB details for CA and certs (e.g., table schema, CA key location) not documented.

Assessment against linked issues: Out-of-scope changes

Code Change Explanation
Clarification and renaming of TPM key/cert filenames, Content-Type header, and troubleshooting steps (docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md) These clarifications and renaming are not explicitly required by the linked issue #30458.
Addition of future enhancements and expanded troubleshooting (docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md) The linked issue does not mention documenting future enhancements or expanded troubleshooting.

Poem

In the warren of docs, a new path appears,
Host identity shines, dispelling old fears.
With SCEP and TPM, the keys now align,
Certificates issued, all hosts in line.
🐇✨
A hop and a skip, the docs now complete—
Fleet’s signatures strong, security sweet!


🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@getvictor
getvictor marked this pull request as ready for review July 8, 2025 19:53
@getvictor

Copy link
Copy Markdown
Member Author

Please merge after approval.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (7)
docs/Contributing/reference/api-for-contributors.md (1)

4995-5010: Add HTTP verb, parameters, and example for consistency

All other endpoint docs explicitly state the HTTP method, show an example call, and outline parameters/response. Omitting those here breaks the established format and makes the new API harder to consume.

-`/api/fleet/orbit/host_identity/scep`
+`GET /api/fleet/orbit/host_identity/scep`
+
+#### Parameters
+None.
+
+#### Example
+
+`GET /api/fleet/orbit/host_identity/scep`
+
+##### Default response
+
+`Status: 200`
+```pem
+-----BEGIN CERTIFICATE-----
+MIIC...
+-----END CERTIFICATE-----
+```

Including a minimal example (even with an elided certificate) keeps this section on par with the rest of the document.

docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md (6)

140-141: Polish wording for flow & clarity

Smoother phrasing (drops the extra comma and uses active voice):

-The implementation determines TPM's P-384 support by attempting to create a test key, and falling back to P-256 if unsupported.
+The implementation tests whether the TPM supports P-384 by creating a temporary key; if that fails, it falls back to P-256.

149-149: Terminate the sentence and fix redundant word

Minor grammar/typo:

-Filename used is `host_identity_tpm.pem`
+The key file is saved as `host_identity_tpm.pem`.

206-206: Add missing article for Content-Type

-... We did not include Content-Type header in the signature because not all requests have this header.
+... We did not include the `Content-Type` header in the signature because not all requests have it.

247-252: Align list style & tighten wording

Static-analysis flagged inconsistent bullet style and grammar. One compact fix:

-New configuration option for orbit and `fleetctl package`: `--fleet-managed-client-certificate`
-
-Server configuration option: none. The SCEP endpoint is always available on the server with Premium license and configured server private key. The server verifies that:
-- requests with HTTP message signatures match the certificate public key and the host node key
-- requests without HTTP message signatures do not have associated host identity certificates
+*New orbit / `fleetctl package` flag*: `--fleet-managed-client-certificate`
+
+*Server configuration*: none required. With a Premium license and a configured server private key, the SCEP endpoint is always exposed. The server verifies:
+  - requests **with** HTTP signatures: the signature matches the certificate’s public key and the host node key
+  - requests **without** HTTP signatures: no host-identity certificate is attached

259-260: Fix typo and add missing articles

-3. **Rate limits**: Limit the rate/number of certificates issues for the same host. This guards against agent issues.
-4. **Fleet server visibility**: Allow IT admin to see which hosts have host identity certificates. For example, we can add a field to `orbit_info` table and IT admin could set up a policy to make sure all hosts have certificates.
+3. **Rate limits**: Limit the number of certificates issued for the same host. This guards against agent issues.
+4. **Fleet server visibility**: Allow IT administrators to see which hosts have host-identity certificates (e.g., add a field to the `orbit_info` table so policies can ensure every host has a certificate).

279-279: End the list item with a period

-   - Check device file permissions (`/dev/tpmrm0`)
+   - Check device-file permissions (`/dev/tpmrm0`).
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0a6f9d1 and 0c93ab7.

📒 Files selected for processing (2)
  • docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md (7 hunks)
  • docs/Contributing/reference/api-for-contributors.md (2 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: getvictor
PR: fleetdm/fleet#30589
File: server/datastore/mysql/schema.sql:501-517
Timestamp: 2025-07-07T22:21:15.721Z
Learning: In the host_identity_scep_certificates table schema, the VARBINARY(100) size for public_key_raw, the nullable host_id without a foreign key constraint, and the use of plain DATETIME instead of DATETIME(6) are intentional design decisions, not issues to be addressed.
Learnt from: getvictor
PR: fleetdm/fleet#30589
File: ee/server/service/hostidentity/depot/depot.go:104-119
Timestamp: 2025-07-08T16:06:54.566Z
Learning: In ee/server/service/hostidentity/depot/depot.go, the security concern where shared challenges allow certificate revocation (lines 104-119) is a known issue that will be addressed in a later feature, not an immediate concern to fix.
docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md (2)
Learnt from: getvictor
PR: fleetdm/fleet#30589
File: server/datastore/mysql/schema.sql:501-517
Timestamp: 2025-07-07T22:21:15.721Z
Learning: In the host_identity_scep_certificates table schema, the VARBINARY(100) size for public_key_raw, the nullable host_id without a foreign key constraint, and the use of plain DATETIME instead of DATETIME(6) are intentional design decisions, not issues to be addressed.
Learnt from: getvictor
PR: fleetdm/fleet#30589
File: ee/server/service/hostidentity/depot/depot.go:104-119
Timestamp: 2025-07-08T16:06:54.566Z
Learning: In ee/server/service/hostidentity/depot/depot.go, the security concern where shared challenges allow certificate revocation (lines 104-119) is a known issue that will be addressed in a later feature, not an immediate concern to fix.
docs/Contributing/reference/api-for-contributors.md (2)

undefined

<retrieved_learning>
Learnt from: getvictor
PR: #30589
File: server/datastore/mysql/schema.sql:501-517
Timestamp: 2025-07-07T22:21:15.721Z
Learning: In the host_identity_scep_certificates table schema, the VARBINARY(100) size for public_key_raw, the nullable host_id without a foreign key constraint, and the use of plain DATETIME instead of DATETIME(6) are intentional design decisions, not issues to be addressed.
</retrieved_learning>

<retrieved_learning>
Learnt from: getvictor
PR: #30589
File: ee/server/service/hostidentity/depot/depot.go:104-119
Timestamp: 2025-07-08T16:06:54.566Z
Learning: In ee/server/service/hostidentity/depot/depot.go, the security concern where shared challenges allow certificate revocation (lines 104-119) is a known issue that will be addressed in a later feature, not an immediate concern to fix.
</retrieved_learning>

🪛 LanguageTool
docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md

[grammar] ~140-~140: There might be a mistake here.
Context: ...pport by attempting to create a test key, and falling back to P-256 if unsupporte...

(QB_NEW_EN_OTHER)


[grammar] ~140-~140: Use proper spacing conventions.
Context: ...nd falling back to P-256 if unsupported. ### Key storage Keys are saved as to the fi...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~149-~149: Use proper spacing conventions.
Context: ...- Parent key template Filename used is host_identity_tpm.pem ## SCEP certificate enrollment ### Overvie...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~168-~168: Place a period at the end of declarative sentences.
Context: ...identity.crt` in the specified directory #### Key usage separation The SCEP implement...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~206-~206: Use articles correctly.
Context: ...and HTTP forwarding. We did not include Content-Type header in the signature because not all...

(QB_NEW_EN_OTHER_ERROR_IDS_000004)


[grammar] ~206-~206: Use proper spacing conventions.
Context: ...cause not all requests have this header. Additional metadata included: - **`keyid...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~247-~247: Use proper spacing conventions.
Context: ...ption for orbit and fleetctl package: --fleet-managed-client-certificate Server configuration option: none. The S...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~249-~249: Use articles correctly.
Context: ... is always available on the server with Premium license and configured server private k...

(QB_NEW_EN_OTHER_ERROR_IDS_000004)


[grammar] ~249-~249: Use articles correctly.
Context: ... on the server with Premium license and configured server private key. The server verifies...

(QB_NEW_EN_OTHER_ERROR_IDS_000004)


[grammar] ~249-~249: Avoid interrupting sentences with colons.
Context: ...er private key. The server verifies that: - requests with HTTP message signatures ma...

(QB_NEW_EN_OTHER_ERROR_IDS_000069)


[grammar] ~250-~250: There might be a mistake here.
Context: ...ificate public key and the host node key - requests without HTTP message signatures...

(QB_NEW_EN_OTHER)


[grammar] ~251-~251: Place a period at the end of declarative sentences.
Context: ...ve associated host identity certificates ## Future enhancements As this an initial ...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~253-~253: Use proper spacing conventions.
Context: ...ity certificates ## Future enhancements As this an initial implementation, futur...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~255-~255: There might be a mistake here.
Context: ...ertificates ## Future enhancements As this an initial implementation, future featu...

(QB_NEW_EN_OTHER)


[grammar] ~255-~255: Use proper spacing conventions.
Context: ...ementation, future features may include: 1. One-time enrollment secret: This provi...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~257-~257: Use proper spacing conventions.
Context: ...dentity certificate and enroll in Fleet. 2. Key Rotation/Renewal: Automatic key ro...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~259-~259: There might be a mistake here.
Context: ...: Limit the rate/number of certificates issues for the same host. This guards against ...

(QB_NEW_EN_OTHER)


[grammar] ~259-~259: Use proper spacing conventions.
Context: ... host. This guards against agent issues. 4. Fleet server visibility: Allow IT admi...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~260-~260: There might be a mistake here.
Context: .... Fleet server visibility: Allow IT admin to see which hosts have host identity c...

(QB_NEW_EN_OTHER)


[grammar] ~260-~260: Use articles correctly.
Context: ...icates. For example, we can add a field to orbit_info table and IT admin could s...

(QB_NEW_EN_OTHER_ERROR_IDS_000004)


[grammar] ~260-~260: Correctly pair commas and coordinating conjunctions.
Context: ...ple, we can add a field to orbit_info table and IT admin could set up a policy to m...

(QB_NEW_EN_OTHER_ERROR_IDS_000073)


[grammar] ~260-~260: Use articles correctly.
Context: ...n add a field to orbit_info table and IT admin could set up a policy to make sur...

(QB_NEW_EN_OTHER_ERROR_IDS_000004)


[grammar] ~260-~260: Use proper spacing conventions.
Context: ...o make sure all hosts have certificates. 5. Windows Support: TPM support for Windo...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~263-~263: Use proper spacing conventions.
Context: ...cates, like a separate key for WiFi/VPN. 8. Hardware Attestation: TPM-based device...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~266-~266: Use proper spacing conventions.
Context: ...ol instead of SCEP to get a certificate. ## Troubleshooting ### Common issues 1. *...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~279-~279: Place a period at the end of declarative sentences.
Context: ... device file permissions (/dev/tpmrm0) 3. Key Creation Failures - Verify TPM ...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)

🪛 markdownlint-cli2 (0.17.2)
docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md

250-250: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


251-251: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


279-279: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: build-binaries
  • GitHub Check: publish
  • GitHub Check: markdown-link-check
  • GitHub Check: build (20.x)
🔇 Additional comments (1)
docs/Contributing/reference/api-for-contributors.md (1)

17-17: TOC entry looks good

Anchor and formatting are consistent with the surrounding items.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (4)
docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md (4)

30-34: Unify unordered-list marker to satisfy MD004

The rest of the document uses * for unordered lists. Switching these four - items keeps the style consistent and silences markdownlint.

- - [TPM 2.0 Library specification](https://trustedcomputinggroup.org/resource/tpm-library-specification/)
- - [TPM 2.0 Key Files](https://www.hansenpartnership.com/draft-bottomley-tpm2-keys.html) - de facto standard used by OpenConnect VPN and other tools
- - [RFC 9421 - HTTP Message Signatures](https://datatracker.ietf.org/doc/html/rfc9421)
- - [RFC 8894 - Simple Certificate Enrolment Protocol](https://datatracker.ietf.org/doc/html/rfc8894) (SCEP)
+ * [TPM 2.0 Library specification](https://trustedcomputinggroup.org/resource/tpm-library-specification/)
+ * [TPM 2.0 Key Files](https://www.hansenpartnership.com/draft-bottomley-tpm2-keys.html) – de-facto standard used by OpenConnect VPN and other tools
+ * [RFC 9421 – HTTP Message Signatures](https://datatracker.ietf.org/doc/html/rfc9421)
+ * [RFC 8894 – Simple Certificate Enrolment Protocol](https://datatracker.ietf.org/doc/html/rfc8894) (SCEP)

149-150: Grammar/clarity: add article and drop superfluous word

-Filename used is `host_identity_tpm.pem`
+The filename used is `host_identity_tpm.pem`.

206-207: Missing definite article around header name

-We did not include Content-Type header in the signature because not all requests have this header.
+We did not include the `Content-Type` header in the signature because not all requests include this header.

275-276: Typo: “issues” → “issued”

-3. **Rate limits**: Limit the rate/number of certificates issues for the same host. This guards against agent issues.
+3. **Rate limits**: Limit the rate/number of certificates issued for the same host. This guards against agent issues.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0c93ab7 and 513c527.

📒 Files selected for processing (1)
  • docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md (7 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: getvictor
PR: fleetdm/fleet#30589
File: server/datastore/mysql/schema.sql:501-517
Timestamp: 2025-07-07T22:21:15.721Z
Learning: In the host_identity_scep_certificates table schema, the VARBINARY(100) size for public_key_raw, the nullable host_id without a foreign key constraint, and the use of plain DATETIME instead of DATETIME(6) are intentional design decisions, not issues to be addressed.
Learnt from: getvictor
PR: fleetdm/fleet#30589
File: ee/server/service/hostidentity/depot/depot.go:104-119
Timestamp: 2025-07-08T16:06:54.566Z
Learning: In ee/server/service/hostidentity/depot/depot.go, the security concern where shared challenges allow certificate revocation (lines 104-119) is a known issue that will be addressed in a later feature, not an immediate concern to fix.
docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md (2)
Learnt from: getvictor
PR: fleetdm/fleet#30589
File: ee/server/service/hostidentity/depot/depot.go:104-119
Timestamp: 2025-07-08T16:06:54.566Z
Learning: In ee/server/service/hostidentity/depot/depot.go, the security concern where shared challenges allow certificate revocation (lines 104-119) is a known issue that will be addressed in a later feature, not an immediate concern to fix.
Learnt from: getvictor
PR: fleetdm/fleet#30589
File: server/datastore/mysql/schema.sql:501-517
Timestamp: 2025-07-07T22:21:15.721Z
Learning: In the host_identity_scep_certificates table schema, the VARBINARY(100) size for public_key_raw, the nullable host_id without a foreign key constraint, and the use of plain DATETIME instead of DATETIME(6) are intentional design decisions, not issues to be addressed.
🪛 LanguageTool
docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md

[grammar] ~3-~3: Use proper spacing conventions.
Context: ...d refinements are currently being added. ## Overview TPM-backed HTTP signing is a s...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~24-~24: Use proper spacing conventions.
Context: ...with TPM * Trusted device authentication ## Architecture ### Reference links - [TP...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~26-~26: Use proper spacing conventions.
Context: ...d device authentication ## Architecture ### Reference links - [TPM 2.0 Library spec...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~28-~28: Use proper spacing conventions.
Context: ...on ## Architecture ### Reference links - [TPM 2.0 Library specification](https://t...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~33-~33: Use proper spacing conventions.
Context: ...racker.ietf.org/doc/html/rfc8894) (SCEP) ### Components The TPM-backed HTTP signing ...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~140-~140: There might be a mistake here.
Context: ...pport by attempting to create a test key, and falling back to P-256 if unsupporte...

(QB_NEW_EN_OTHER)


[grammar] ~140-~140: Use proper spacing conventions.
Context: ...nd falling back to P-256 if unsupported. ### Key storage Keys are saved as to the fi...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~149-~149: Use proper spacing conventions.
Context: ...- Parent key template Filename used is host_identity_tpm.pem ## SCEP certificate enrollment ### Overvie...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~168-~168: Place a period at the end of declarative sentences.
Context: ...identity.crt` in the specified directory #### Key usage separation The SCEP implement...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~206-~206: Use articles correctly.
Context: ...and HTTP forwarding. We did not include Content-Type header in the signature because not all...

(QB_NEW_EN_OTHER_ERROR_IDS_000004)


[grammar] ~206-~206: Use proper spacing conventions.
Context: ...cause not all requests have this header. Additional metadata included: - **`keyid...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~247-~247: Use proper spacing conventions.
Context: ... Configuration ### Client configuration Enable TPM-backed HTTP signing when pack...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~249-~249: Use proper spacing conventions.
Context: ...igning when packaging or running fleetd: bash # Package with TPM signing enabled fleetctl package --fleet-managed-client-certificate ... # Run orbit with TPM signing enabled orbit --fleet-managed-client-certificate ... ### Server configuration No additional serv...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~259-~259: Use proper spacing conventions.
Context: ...ficate ... ``` ### Server configuration No additional server configuration is re...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~263-~263: Use proper spacing conventions.
Context: ...ense** - Configured server private key The server automatically verifies that: ...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~266-~266: There might be a mistake here.
Context: ...ertificate public key and the host node key - Requests without HTTP message signatu...

(QB_NEW_EN_OTHER)


[grammar] ~267-~267: Place a period at the end of declarative sentences.
Context: ...ve associated host identity certificates ## Future enhancements As this an initial ...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~269-~269: Use proper spacing conventions.
Context: ...ity certificates ## Future enhancements As this an initial implementation, futur...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~271-~271: There might be a mistake here.
Context: ...ertificates ## Future enhancements As this an initial implementation, future featu...

(QB_NEW_EN_OTHER)


[grammar] ~271-~271: Use proper spacing conventions.
Context: ...ementation, future features may include: 1. One-time enrollment secret: This provi...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~273-~273: Use proper spacing conventions.
Context: ...dentity certificate and enroll in Fleet. 2. Key Rotation/Renewal: Automatic key ro...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~275-~275: There might be a mistake here.
Context: ...: Limit the rate/number of certificates issues for the same host. This guards against ...

(QB_NEW_EN_OTHER)


[grammar] ~275-~275: Use proper spacing conventions.
Context: ... host. This guards against agent issues. 4. Fleet server visibility: Allow IT admi...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~276-~276: There might be a mistake here.
Context: .... Fleet server visibility: Allow IT admin to see which hosts have host identity c...

(QB_NEW_EN_OTHER)


[grammar] ~276-~276: Use articles correctly.
Context: ...icates. For example, we can add a field to orbit_info table and IT admin could s...

(QB_NEW_EN_OTHER_ERROR_IDS_000004)


[grammar] ~276-~276: Correctly pair commas and coordinating conjunctions.
Context: ...ple, we can add a field to orbit_info table and IT admin could set up a policy to m...

(QB_NEW_EN_OTHER_ERROR_IDS_000073)


[grammar] ~276-~276: Use articles correctly.
Context: ...n add a field to orbit_info table and IT admin could set up a policy to make sur...

(QB_NEW_EN_OTHER_ERROR_IDS_000004)


[grammar] ~276-~276: Use proper spacing conventions.
Context: ...o make sure all hosts have certificates. 5. Windows Support: TPM support for Windo...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~279-~279: Use proper spacing conventions.
Context: ...cates, like a separate key for WiFi/VPN. 8. Hardware Attestation: TPM-based device...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~282-~282: Use proper spacing conventions.
Context: ...ol instead of SCEP to get a certificate. ## Troubleshooting ### TPM hardware issues...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~284-~284: Use proper spacing conventions.
Context: ...o get a certificate. ## Troubleshooting ### TPM hardware issues 1. **TPM device not...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~286-~286: Use proper spacing conventions.
Context: ...Troubleshooting ### TPM hardware issues 1. TPM device not found - Verify TPM i...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~288-~288: There might be a mistake here.
Context: ...PM hardware issues 1. TPM device not found - Verify TPM is enabled in BIOS/UE...

(QB_NEW_EN_OTHER)


[grammar] ~289-~289: There might be a mistake here.
Context: ...t found** - Verify TPM is enabled in BIOS/UEFI - Check kernel TPM driver is loaded ...

(QB_NEW_EN_OTHER)


[grammar] ~290-~290: There might be a mistake here.
Context: ...OS/UEFI - Check kernel TPM driver is loaded - Ensure device files exist with pro...

(QB_NEW_EN_OTHER)


[grammar] ~291-~291: Place a period at the end of declarative sentences.
Context: ...vice files exist with proper permissions 2. Permission denied - Add user to `ts...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~293-~293: There might be a mistake here.
Context: ...ith proper permissions 2. Permission denied - Add user to tss group for TPM ...

(QB_NEW_EN_OTHER)


[grammar] ~294-~294: There might be a mistake here.
Context: ...** - Add user to tss group for TPM access - Check device file permissions (`/d...

(QB_NEW_EN_OTHER)


[grammar] ~295-~295: Place a period at the end of declarative sentences.
Context: ... device file permissions (/dev/tpmrm0) 3. Key creation failures - Verify TPM ...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~297-~297: There might be a mistake here.
Context: ...ions (/dev/tpmrm0) 3. Key creation failures - Verify TPM is not locked or in f...

(QB_NEW_EN_OTHER)


[grammar] ~298-~298: There might be a mistake here.
Context: ... Verify TPM is not locked or in failure mode - Clear TPM if necessary (will lose ...

(QB_NEW_EN_OTHER)


[grammar] ~299-~299: There might be a mistake here.
Context: ...ar TPM if necessary (will lose existing keys) - Check available TPM resources ###...

(QB_NEW_EN_OTHER)


[grammar] ~300-~300: Place a period at the end of declarative sentences.
Context: ...keys) - Check available TPM resources ### Certificate enrollment issues 1. **SCEP...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~302-~302: Use proper spacing conventions.
Context: ...urces ### Certificate enrollment issues 1. SCEP server connection issues - Ver...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~304-~304: There might be a mistake here.
Context: ...ent issues 1. SCEP server connection issues - Verify SCEP server URL is access...

(QB_NEW_EN_OTHER)


[grammar] ~305-~305: Use articles correctly.
Context: ... server connection issues** - Verify SCEP server URL is accessible (and your Flee...

(QB_NEW_EN_OTHER_ERROR_IDS_000004)


[grammar] ~305-~305: There might be a mistake here.
Context: ...essible (and your Fleet server has this feature) - Check network connectivity and fir...

(QB_NEW_EN_OTHER)


[grammar] ~306-~306: Place a period at the end of declarative sentences.
Context: ... network connectivity and firewall rules 2. Challenge password authentication -...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~308-~308: There might be a mistake here.
Context: ...firewall rules 2. Challenge password authentication - Confirm challenge password is co...

(QB_NEW_EN_OTHER)


[grammar] ~309-~309: Place a period at the end of declarative sentences.
Context: ...word is correct (a valid enrollment key) 3. Certificate enrollment failures - R...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~311-~311: There might be a mistake here.
Context: ...lment key) 3. Certificate enrollment failures - Review SCEP server logs for reje...

(QB_NEW_EN_OTHER)


[grammar] ~312-~312: Place a period at the end of declarative sentences.
Context: ...w SCEP server logs for rejection reasons ### General debugging Enable fleetd/server ...

(QB_NEW_EN_OTHER_ERROR_IDS_000178)


[grammar] ~314-~314: Use proper spacing conventions.
Context: ...rejection reasons ### General debugging Enable fleetd/server debug logging to tr...

(QB_NEW_EN_OTHER_ERROR_IDS_000007)


[grammar] ~316-~316: Use proper spacing conventions.
Context: ...er debug logging to troubleshoot issues.

(QB_NEW_EN_OTHER_ERROR_IDS_000007)

🪛 markdownlint-cli2 (0.17.2)
docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md

30-30: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


31-31: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


32-32: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


33-33: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


262-262: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


263-263: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


266-266: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


267-267: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


289-289: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


290-290: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


291-291: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


294-294: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


295-295: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


298-298: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


299-299: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


300-300: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


305-305: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


306-306: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


309-309: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


312-312: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: markdown-link-check
  • GitHub Check: publish
  • GitHub Check: build (20.x)
  • GitHub Check: build-binaries
🔇 Additional comments (1)
docs/Contributing/product-groups/orchestration/tpm-backed-http-signing.md (1)

259-264: “No additional server configuration” is misleading

A premium licence and a configured private key are explicit configuration requirements. Consider re-phrasing to avoid confusion for operators.

@getvictor
getvictor merged commit a51420f into main Jul 11, 2025
@getvictor
getvictor deleted the victor/30458-host-identity-docs branch July 11, 2025 07:32
lucasmrod pushed a commit that referenced this pull request Jul 11, 2025
Fixes #30458 

Contributor docs PR: #30651

# Checklist for submitter

- We will add changes file later.
- [x] Input data is properly validated, `SELECT *` is avoided, SQL
injection is prevented (using placeholders for values in statements)
- [x] If database migrations are included, checked table schema to
confirm autoupdate
- For database migrations:
- [x] Checked schema for all modified table for columns that will
auto-update timestamps during migration.
- [x] Confirmed that updating the timestamps is acceptable, and will not
cause unwanted side effects.
- [x] Ensured the correct collation is explicitly set for character
columns (`COLLATE utf8mb4_unicode_ci`).
- [x] Added/updated automated tests
- Did not do manual QA since the SCEP client I have doesn't support ECC.
Will rely on next subtasks for manual QA.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Introduced Host Identity SCEP (Simple Certificate Enrollment Protocol)
support, enabling secure host identity certificate enrollment and
management.
* Added new API endpoints for Host Identity SCEP, including certificate
issuance and retrieval.
* Implemented MySQL-backed storage and management for host identity SCEP
certificates and serials.
* Added new database tables for storing host identity SCEP certificates
and serial numbers.
* Provided utilities for encoding certificates and keys, and handling
ECDSA public keys.

* **Bug Fixes**
  * None.

* **Tests**
* Added comprehensive integration and unit tests for Host Identity SCEP
functionality, including certificate issuance, validation, and error
scenarios.

* **Chores**
* Updated test utilities to support unique test names and new SCEP
storage options.
* Extended mock datastore and interfaces for new host identity
certificate methods.

* **Documentation**
* Added comments and documentation for new SCEP-related interfaces,
methods, and database schema changes.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TPM: New SCEP endpoint on server

4 participants