Skip to content

test(vanity): Let's Encrypt staging HTTP-01 on PR vanity route (test only) - #2929

Draft
DerekRoberts wants to merge 23 commits into
mainfrom
feat/vanity-cert-canary
Draft

DerekRoberts wants to merge 23 commits into
mainfrom
feat/vanity-cert-canary

Conversation

@DerekRoberts

@DerekRoberts DerekRoberts commented Oct 30, 2026 •

Copy link
Copy Markdown
Member

We needed to prove bcgov/actions-openshift#155 can issue a browser-trusted certificate for quickstart.nrs.gov.bc.ca from Actions, with no Service Desk ticket. Not for merge: this PR only exercises that action on a PR deploy.

  • What changes: the vanity job called bcgov/actions-openshift/acme-http01 (Create code-gov-data JS in pipeline #155) and route-tls (Junk commit #156), pinned to their branch heads. The job is now off (if: false), because a production certificate is live and each run would replace it. Notes are in docs/spike-2928-vanity-tls.md.
  • What could go wrong: closing this PR deletes Route quickstart-openshift-2929-vanity, which takes the certificate with it. Re-enabling the job issues another production certificate, limited to 5 per host per 7 days. The certificate expires 2027-02-05 and nothing renews it yet.
  • How verified: on 2026-11-07, curl https://quickstart.nrs.gov.bc.ca verified without -k, and openssl s_client showed issuer YR1, ISRG Root X1 in the chain and Verify return code: 0.

Related to #2928, bcgov/actions-openshift#153

@DerekRoberts DerekRoberts moved this from New to Active in DevOps (NR) Oct 30, 2026
@DerekRoberts
DerekRoberts marked this pull request as ready for review October 30, 2026 17:49
Copilot AI balanced review requested due to automatic review settings October 30, 2026 17:49
@DerekRoberts DerekRoberts moved this from Active to Waiting in DevOps (NR) Oct 30, 2026

Copilot AI left a comment

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.

🟡 Changes recommended

Missing canary secrets can silently fall back to Entrust, allowing deployment of the wrong or mixed certificate set instead of failing validation.

2 open issues
What changed in this PR

Adds an opt-in, non-Entrust TLS canary for the vanity route, supporting issue #2928 while preserving Entrust as the default. Live application and result recording remain manual follow-up steps.

Changes:

  • Adds a certificate-set selector to the standalone TLS workflow.
  • Adds a script that generates a short-lived personal CA and leaf certificate, then discards the CA key.
  • Documents probe results, certificate options, manual execution, rollback, and future renewal considerations.
File Description
scripts/​tls-canary-cert.sh Generates local canary certificate material without uploading it.
docs/​spike-2928-vanity-tls.md Records findings and instructions for the live TLS experiment.
.github/​workflows/​route-tls.yml Selects Entrust or canary secrets for manual TLS deployment.

Review effort: Balanced

Comment thread .github/workflows/route-tls.yml Resolved
Comment thread docs/spike-2928-vanity-tls.md Resolved
@DerekRoberts DerekRoberts self-assigned this Oct 30, 2026
Comment thread .github/workflows/route-tls.yml Fixed
Comment thread .github/workflows/route-tls.yml Fixed
Comment thread .github/workflows/route-tls.yml Fixed
@github-actions

Copy link
Copy Markdown

🚀 Deployments Available

@DerekRoberts
DerekRoberts marked this pull request as draft October 31, 2026 06:56
@DerekRoberts DerekRoberts changed the title feat(route-tls): non-Entrust canary cert set for vanity TLS spike test(vanity): self-signed TLS on PR frontend route (test only) Oct 31, 2026
@DerekRoberts DerekRoberts changed the title test(vanity): self-signed TLS on PR frontend route (test only) test(vanity): Let's Encrypt staging HTTP-01 on PR vanity route (test only) Nov 4, 2026
@DerekRoberts DerekRoberts moved this from Waiting to Active in DevOps (NR) Nov 5, 2026
Replace the throwaway canary script with the action in
bcgov/actions-openshift#155, pinned to its branch head, so the live run
tests the code being shared instead of a separate copy. Staging only.

Refs #2928
Staging passed on the live host with this action, so issue one
browser-trusted certificate for quickstart.nrs.gov.bc.ca.

Refs #2928
The one approved production run is done, so later pushes must not issue
another production certificate.

Refs #2928
Replaces the acme-http01 and route-tls steps with the single cert-keeper
action from bcgov/actions-openshift#155, first with force off to prove it
leaves a healthy certificate alone.

Refs #2928
The forced run lost its certificate to a Pod lifetime bug in cert-keeper.

Refs #2928
cert-keeper issued and installed a certificate on the live host.

Refs #2928

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Active

Development

Successfully merging this pull request may close these issues.

3 participants