Skip to content

Document the X.509 provisioning challenge exchange - #204

Open
richturner wants to merge 2 commits into
mainfrom
document/x509-provisioning-challenge
Open

richturner wants to merge 2 commits into
mainfrom
document/x509-provisioning-challenge

Conversation

@richturner

Copy link
Copy Markdown
Member

Description

Documents the X.509 auto provisioning proof of possession change from the fix for
GHSA-7jp3-2229-xgqj:
devices must now sign a one-time challenge with their certificate's private key before they are
provisioned, and certificate-only requests are rejected with UNAUTHORIZED.

user-guide/080-gateways-and-devices/20-auto-provisioning.md

  • Breaking change warning for existing devices (no compatibility mode).
  • Connect flow rewritten as the two-step exchange, with the old PNG replaced by a Mermaid
    sequence diagram; includes the response topic ownership rules (only the subscribing
    connection may publish requests, one provisioning response topic per connection).
  • New x509-challenge-request and x509-challenge messages, and the signature field on x509.
  • What clients must check before signing (challenge prefix and their own request topic), the
    signature algorithm per key type, and the challenge's 60s lifetime, one-time use and binding.
  • UNAUTHORIZED now also covers missing/invalid signatures, expired/used challenges and
    unsupported key types.
  • Guidance on keeping the private key on the device (ideally a secure element) and on TLS.

tutorials/080-auto-provision-devices-at-scale.md

  • Steps 3 and 4 updated for the challenge exchange.

versioned_docs are untouched, as released versions still use the old protocol.

Before merging

  • Merge together with the core release that includes the fix, not before, so the live docs
    don't describe a protocol released versions reject.
  • Confirm the release version in the breaking change warning (assumed 1.34.0; adjust if
    the fix ships as a patch release).
  • Check the Mermaid diagram renders in the preview build.

Related: openremote/core#3542 (JMeter auto-provisioning plans).

🤖 Generated with Claude Code

X.509 auto provisioning now requires the device to prove it holds its
certificate's private key by signing a one-time challenge
(GHSA-7jp3-2229-xgqj). Document the two-step exchange and its messages,
the signature algorithms per key type, the challenge's lifetime and
binding, what clients must check before signing, the response topic
ownership rules, and the wider meaning of UNAUTHORIZED, with a breaking
change warning for existing devices.

Replace the connect flow image of the single step exchange with a
Mermaid sequence diagram, and update the at scale tutorial to match.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@richturner richturner self-assigned this Nov 3, 2026
@richturner
richturner marked this pull request as ready for review November 4, 2026 10:33
@richturner
richturner requested a review from a team November 4, 2026 10:34

@denniskuijs denniskuijs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This documentation is AI generated. It contains a lot of em dashes, bold formatting etc. Can you please review it and update accordingly?

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

Maintainers must confirm the first core release containing the fix and coordinate documentation publication, since the latest published version is 1.33.0 but the docs assume 1.34.0.

No open issues 🎉

What changed in this PR

Documents the X.509 proof-of-possession challenge exchange for device auto provisioning, replacing the certificate-only flow in the current documentation while leaving versioned docs unchanged.

Changes:

  • Adds a breaking-change warning, two-step exchange instructions, message schemas, and a Mermaid sequence diagram.
  • Explains challenge validation, signing algorithms, expiry, subscription ownership, and private-key and TLS requirements.
  • Updates the provisioning tutorial to include private-key storage and challenge signing.
File Description
docs/​user-guide/​080-gateways-and-devices/​20-auto-provisioning.md Documents the challenge protocol, compatibility break, and security requirements.
docs/​tutorials/​080-auto-provision-devices-at-scale.md Updates device preparation and provisioning steps for challenge signing.

Review effort: Balanced

@richturner

Copy link
Copy Markdown
Member Author

Can you provide details of what looks out of place, there are minor adjustments to the existing doc and AI is mentioned on the commit but I don't believe em dashes have been introduced?

This branch has not been deployed

No deployments
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.

3 participants