FM-S08: Proxmox client spike — fallback (reqwest + pinned rustls verifier) chosen - #98
Merged
Merged
Conversation
…rustls verifier) chosen
4 tasks
There was a problem hiding this comment.
All reported issues were addressed across 3 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
…y citations and ledger status
Member
Author
|
All six findings addressed in 16b0fcf:
|
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #97 (FM-S08).
Question
Does the typed
proxmox-clientcrate satisfy authentication, UPID task polling, custom TLS trust/pinning, unknown-field tolerance, and cancellation — or does Fleet keep a smallreqwesttransport with typed provider DTOs?Decision: fallback chosen — reqwest transport with a pinned-fingerprint rustls verifier
Evidence (live against the integration VM's PVE 9.2.2 host, disposable probe project outside the repo)
qmrebootUPID round-trip)accept_invalid_certs(bool)only; no pinning hook, no custom roots. PVE presents its own cluster CA, so system trust fails and the only "working" option is disabling verification (forbidden)StringUPID needs Fleet-side parsing; no wait helper (Fleet owns the loop anyway)Option, envelope unwrapsdata: null,VmConfigflattens indexed params)rustls::client::danger::ServerCertVerifierSHA-256-pinning the leaf cert connected live and refused a wrong fingerprint at the handshake (is_connect()), on reqwest 0.12 + rustlsring— the TLS stack Fleet already usesA second candidate,
proxmox-api0.2.0 (schema-generated), was rejected faster: its default client hardcodesdanger_accept_invalid_certs(true)and itsDebugprints the raw token.Changes
docs/research/ecosystem.md— FM-S08 evidence table + decision, Proxmox section refreshed with current versions/commitsdocs/planning/spikes.md— FM-S08 resolution entry with the rejected option nameddocs/planning/initial-issues.md— M4 status corrected to Complete; FM-S08 ledger entryNon-goals (spike rules)
No production code: the pinning verifier and probe binaries live in a disposable project outside the repository; FM-600 implements the transport.
Summary by cubic
Closes #97 with the FM-S08 spike outcome: Fleet will use a small
reqwesttransport with a pinned-fingerprintrustlsverifier instead of the typedproxmox-clientcrate. The typed crate failed the TLS security gate because it only exposesaccept_invalid_certs(bool), and PVE presents its own cluster CA.Changes
docs/research/ecosystem.md, including the positive and negative pinning probe against the PVE 9.2 host and the recorded deviation for PVE 8.x.docs/planning/spikes.md, naming the rejectedproxmox-apialternative and the 8.x deviation.docs/planning/initial-issues.mdto mark M4 as code-complete and add the FM-S08 ledger entry.No production code or migration steps are included; the pinning verifier is proven in a disposable probe outside this repo, and FM-600 implements the transport.
Written for commit 16b0fcf. Summary will update on new commits.