feat(tls): add crash-safe ACME HTTP-01 issuance - #37
Draft
bymoye wants to merge 1 commit into
Draft
Conversation
This was referenced Aug 14, 2026
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.
Refs #31. Depends on #34. Related server capability work: nazozero/NazoAuth#130
Outcome
Adds the independently reviewable ACME HTTP-01 issuance transaction on top of the external TLS certificate provider. This PR issues and validates deployment-owned public-server certificate material; it deliberately does not install, reload, or claim that a live endpoint changed certificates.
Security and recovery boundary
proxy_tlsdeployment grant and binds deployment/declaration revision, tenant, exact hostname, JTI, issuance revision CAS, configuration/trust digests, capability, and expiry;--agree-termsfor the exact configured HTTPS TOS URL and a preconfigured non-symlink HTTP-01 webroot;NazoAuth protocol keys remain in NazoAuth/KMS. Client and wallet private keys remain client-side. No NazoAuth release version or Direct TLS capability is hard-coded.
Responsibility choice
First-principles review kept ACME issuance separate from #34's install/reload/public-verification transaction. Combining them would couple two independently recoverable external systems and create ambiguous rollback ownership. The issuance receipt instead supplies exact certificate/key paths and digests to the existing provider transaction. Nginx/Angie configuration, Direct TLS negotiation, and NazoAuth transport mutation remain outside this PR until the server exposes the required capabilities from NazoAuth #127/#128/#129/#130.
Verification
Local Windows, exact commit
621298f:cargo fmt --all -- --checkgit diff --checkcargo clippy --workspace --all-targets --all-features --locked -- -D warnings— no issuescargo test --workspace --all-targets --all-features --locked— 361 passedcargo build --locked --workspace --all-targets --all-features --release— 0 errors; three informational MSVC import-library linker messagestls --helpsmokeFocused tests cover strict parsing, exact challenge cleanup/tamper refusal, account-key pre-network persistence and journal binding, aborted transaction evidence/pending retirement, receipt binding, and issuance revision fencing.
Not yet verified / not claimed
621298f8535d37c1ed2f3bb0d6389bb0b2545fa8passed 13/13 remote checks on Windows, macOS, Ubuntu, controller/server compatibility, and the Docker/Podman/systemd discovery job; Linux owner/mode behavior is covered by CI, but no real CA or deployed endpoint was exercised;No merge, release, deployment, or tag operation is performed by this PR.