Skip to content

HLD for Redfish Certificate Provisioning Integration#2461

Open
shreyansh-nexthop wants to merge 2 commits into
sonic-net:masterfrom
nexthop-ai:shreyansh.redfish_acms_integration
Open

HLD for Redfish Certificate Provisioning Integration#2461
shreyansh-nexthop wants to merge 2 commits into
sonic-net:masterfrom
nexthop-ai:shreyansh.redfish_acms_integration

Conversation

@shreyansh-nexthop

Copy link
Copy Markdown

No description provided.

@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
No pipelines are associated with this pull request.

@shreyansh-nexthop
shreyansh-nexthop marked this pull request as ready for review July 13, 2026 11:42
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
No pipelines are associated with this pull request.

@shreyansh-nexthop
shreyansh-nexthop force-pushed the shreyansh.redfish_acms_integration branch from ba9b34e to 42192c3 Compare July 14, 2026 07:08
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
No pipelines are associated with this pull request.

@shreyansh-nexthop shreyansh-nexthop changed the title HLD for Redfish ACMS Integration HLD for Redfish Certificate Provisioning Integration Jul 14, 2026
- **Automatic certificate consumption.** A staging helper (`stage-credentials.sh`) inside the redfish container reshapes the provisioned files from `/etc/sonic/credentials/` (`server.crt`, `server.key`, `server_ca.crt`) into what bmcweb expects: a combined `server.pem`, a CA truststore with its `<hash>.0` symlink. bmcweb's code is untouched.
- **Automatic rotation.** A watcher picks up installs and rotations (inotify, plus a 60 second reconcile as a safety net) and restarts bmcweb, since bmcweb reads certificates only at startup. A cert/key pair guard ensures a mid-rotation mismatch is never staged.
- **mTLS enforcement.** `TLSStrict` and CN-to-local-user mapping (`MTLSCommonNameParseMode 2`) are enabled once, at first provisioning. Clients must present a certificate signed by the staged CA whose CN names a local BMC user.
- **Secure mode (fail closed).** A CONFIG_DB flag, `DEVICE_METADATA|localhost` field `redfish_secure_mode`, is auto-set at first provisioning. Once on, every bmcweb start is gated: with no valid staged certificate, bmcweb does not start at all, instead of falling back to a self-signed cert. Recovery is automatic when valid certs reappear.

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.

suggest to keep it out of DEVICE_METADATA .. we can keep it as a separate table for REDFISH -- something like this - is this ok ?

"REDFISH": {
"AUTHENTICATION_MODE": {
"secure_mode": "true"
}
}

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Sure, I've moved the flag out of DEVICE_METADATA into a dedicated REDFISH table as you proposed:

"REDFISH": {
    "AUTHENTICATION_MODE": {
        "secure_mode": "true"
    }
}

@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
No pipelines are associated with this pull request.

High-level design for staging externally provisioned certificates into the
redfish (bmcweb) container and enforcing mTLS, without modifying bmcweb.

Signed-off-by: shreyansh-nexthop <shreyansh@nexthop.ai>
Address review comment: keep the secure-mode policy out of DEVICE_METADATA
and store it in REDFISH|AUTHENTICATION_MODE:secure_mode instead.

Signed-off-by: shreyansh-nexthop <shreyansh@nexthop.ai>
@shreyansh-nexthop
shreyansh-nexthop force-pushed the shreyansh.redfish_acms_integration branch from 84d18b2 to 8b2b38c Compare July 16, 2026 19:33
@mssonicbld

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

Copy link
Copy Markdown
No pipelines are associated with this pull request.

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