breachme.ai: fix syncPubKeyDomain prefix (Cloudflare verifier returns 502)#1068
breachme.ai: fix syncPubKeyDomain prefix (Cloudflare verifier returns 502)#1068Gilayos wants to merge 2 commits into
Conversation
Cloudflare's Domain Connect verifier constructs the public-key TXT lookup target as `<key>.<syncPubKeyDomain>`. Our previous template had `syncPubKeyDomain` already containing the `domainconnect.` prefix, so when our apply URL sent `key=domainconnect`, Cloudflare's verifier looked up TXT at `domainconnect.domainconnect.breachme.ai` — NXDOMAIN — upstream verify service threw → 502 Bad Gateway → the dash JS showed the generic "URL is not verified" to users. Confirmed via HAR: POST /dns/domainconnect/v2/verify body included `"domain": "domainconnect.domainconnect.breachme.ai"` (smoking gun for the doubled prefix). This change moves the `domainconnect.` prefix out of `syncPubKeyDomain` and into the apply URL's `key` parameter, matching the canonical pattern used by other working templates in this repo. The TXT record itself stays exactly where it lives now (`domainconnect.breachme.ai`).
|
✅ JSON Filename Check Passed |
|
✅ JSON Schema Validation Passed |
Linter OK
|
| Level | Code | Note |
|---|---|---|
| info | DCTL1021 | missing from iana definitions |
PR Description Check FailedThe PR description is missing required elements. Please update it according to the PR template. Details |
|
Closing — re-read Cloudflare's Domain Connect docs more carefully and the template doesn't actually need to change. The doubled-prefix in the HAR (
i.e. Confirmed by running Server-side fix shipped: @kerolasa — thanks for your patience while we worked through this. If the apply URLs still fail after the new code is live, I'll capture another HAR. |
Summary
Move the
domainconnect.prefix out ofsyncPubKeyDomainand into the apply URL'skeyparameter. Originally submitted in #1011; the prefix-in-template version was a misconfiguration on my side that surfaced once Cloudflare started actually verifying signatures against our key.Problem
Cloudflare's Domain Connect verifier (the dashboard at
dash.cloudflare.com/domainconnect/...) constructs the public-key TXT lookup target as<key>.<syncPubKeyDomain>. With the previous template:syncPubKeyDomaindomainconnect.breachme.aikey=domainconnectdomainconnect.domainconnect.breachme.ai❌domainconnect.breachme.aiThe doubled
domainconnect.prefix → NXDOMAIN → upstream verify service throws → 502 Bad Gateway from/dns/domainconnect/v2/verify→ the dash JS shows the generic "Cloudflare cannot proceed with applying new DNS records for BreachMe because this URL is not verified" error to users.Smoking gun from a HAR captured 2026-05-03:
Fix
Change
syncPubKeyDomainfrom"domainconnect.breachme.ai"to"breachme.ai". The apply URL keepskey=domainconnect, so Cloudflare constructsdomainconnect.breachme.ai— exactly where the TXT record lives.The TXT record at
domainconnect.breachme.aiis unchanged; only the template metadata moves.Verification
domainconnect.breachme.aistill resolves to two correctly-chunkedp=1,a=RS256,d=…/p=2,a=RS256,d=…records.openssl dgst -sha256 -verifyagainst the reassembled key still returnsVerified OKfor our signed payloads.Notes for reviewers
providerIdandserviceIdare unchanged — same template identity.key=domainconnectonce this template is live.cc @kerolasa — happy to provide the full HAR off-issue if helpful for tracing your verifier's behaviour. The 502 response (vs a clearer 4xx with "key configuration mismatch") made this a tough one to diagnose without the network capture.
🤖 Generated with Claude Code