Skip to content

Stop the HTTPS runbook from recommending Full (strict) - #95

Merged
jamditis merged 3 commits into
masterfrom
docs/61-cloudflare-full-not-strict
Jul 28, 2026
Merged

Stop the HTTPS runbook from recommending Full (strict)#95
jamditis merged 3 commits into
masterfrom
docs/61-cloudflare-full-not-strict

Conversation

@jamditis

Copy link
Copy Markdown
Owner

The custom-domain HTTPS runbook in CLAUDE.md ended with an instruction that would take the site down if anyone followed it: step 4 said to keep Cloudflare's SSL mode at "Full (strict)" throughout a cert restore.

Two things are wrong with that. The zone runs full, so the line also misreports the current state.

Strict would break the site. Measured today against a Pages IP:

$ openssl s_client -connect 185.199.108.153:443 -servername tools.amditis.tech
subject=CN=*.github.io
issuer=C=US, O=Let's Encrypt, CN=YR2
Verify return code: 0 (ok)

The origin cert is valid and chains cleanly, but a *.github.io wildcard does not cover tools.amditis.tech. Full encrypts to the origin without checking the name, which is why the site works. Full (strict) adds the name check, fails it, and returns HTTP 526 to every visitor. "Valid cert" and "cert matching this hostname" are separate questions and strict only accepts both.

The blast radius is the zone, not this repo. SSL mode is a zone setting. Of the 33 proxied records on amditis.tech, 26 are cloudflared tunnel CNAMEs that pull no third-party origin. Of the other 7, tools, system, and mooc all CNAME to jamditis.github.io and share the same mismatch, so they would break together; ccm (Firebase) and codiac (Cloudflare Pages) have their own third-party origins to check; codex and upload.social are AAAA records on the 100:: discard prefix with no origin to validate.

So the change replaces the bad instruction, explains why Full is right here, scopes when strict becomes safe (after step 3 confirms a real GitHub cert, and once ccm and codiac pass the same check), and records the openssl one-liner next to the claim so the next reader can verify the origin cert instead of trusting the doc. Step 3 already models that pattern for the GitHub cert state.

Docs only, no behavior change. Background: #61.

wake-20260727T0705-35b527

… site

Step 4 told the reader to keep Cloudflare's SSL mode at "Full (strict)"
through a cert restore. The zone actually runs `full`, and strict would
break the site rather than harden it: GitHub Pages answers SNI
tools.amditis.tech with a cert for CN=*.github.io, which validates
cleanly but does not cover the hostname, so strict rejects the name and
visitors get HTTP 526.

The mode is zone-wide, so the blast radius is wider than this repo:
system and mooc share the same Pages origin and the same mismatch, and
ccm and codiac pull their own third-party origins.

Records the verification command next to the claim so the next reader can
confirm the origin cert before touching the switch, matching what step 3
already does for the GitHub cert state.

wake-20260727T0705-35b527

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fed482de82

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread CLAUDE.md Outdated
Comment thread CLAUDE.md Outdated
Two findings from the review, both cases of a claim reaching past its
evidence.

The prerequisite list named ccm and codiac but omitted system and mooc,
even though the paragraph above says those two share tools' mismatch and
break together. An operator who provisioned tools, checked ccm and
codiac, and trusted that sentence would have flipped the switch and left
system and mooc serving 526. All five now have to pass.

The verification command printed only the subject, which cannot decide
hostname coverage: a SAN can cover a name the CN does not, and s_client
skips hostname verification unless asked. It now asks, via
-verify_hostname, and reports the verdict openssl reaches -- today 62
(hostname mismatch). Records the cert's actual SANs, and a control run
against jamditis.github.io that returns 0 (ok), so the reader can tell a
real mismatch from a broken invocation.
@jamditis
jamditis marked this pull request as draft July 27, 2026 14:06
@jamditis
jamditis marked this pull request as ready for review July 27, 2026 14:06

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9c87338009

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread CLAUDE.md Outdated
The doc called the SSL mode a zone setting rather than a per-hostname one,
which ruled out a staged migration that is actually available: a
Configuration Rule can override the mode for matching hostnames, so the
github.io hosts could be held at Full while the default moves to strict.

Records it as an option with the entitlement caveat and the check, and keeps
the zone-wide route as the recommendation, since an override is a rule that
stops protecting the moment someone edits it on a leg nobody watches.
@jamditis

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: 9f9c4b5e1a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@jamditis
jamditis merged commit 70c53d4 into master Jul 28, 2026
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.

1 participant