Skip to content

odoo: trust the CA in Chromium and Google Chrome - #44

Merged
andrewthomaslee merged 2 commits into
mainfrom
odoo-chromium-trust
Nov 12, 2026
Merged

andrewthomaslee merged 2 commits into
mainfrom
odoo-chromium-trust

Conversation

@andrewthomaslee

Copy link
Copy Markdown
Member

What

  • flake-parts/nixosModules/odoo.nix: trustCertificate (on by default) now also writes /etc/chromium/policies/managed/odoo-ca.json and /etc/opt/chrome/policies/managed/odoo-ca.json with the CACertificates enterprise policy. The CA is stored as base64 DER, built from the public ca.crt. The Firefox policy file and these two now sit in one environment.etc set.
  • vm-tests/odoo-chromium.nix (new): alice has chromium in her user packages, as matt does on beelink, and runs it headless against https://demo.odoo.localhost. A request in nginx's access log proves the TLS handshake passed. The test checks:
    • an untrusted self-signed control never gets past TLS;
    • trusted with both paths;
    • system trust alone (policy removed): trusted;
    • neither (policy removed, system bundle and /etc/ssl/trust-source swapped for stock cacert): refused;
    • the policy alone: trusted.
  • documentation/docs/odoo.md: trustCertificate and the new test.
  • flake.lock: skills bumped to skills#18 (odoo skill: Chromium trust, the ceo-odoo page).

Why

matt now has Chromium on beelink. The test shows a nixpkgs Chromium already trusted the Odoo CA before this change. NixOS's NSS swaps its built-in roots (libnssckbi) for p11-kit, which reads /etc/ssl/trust-source, and security.pki puts the CA there. The policy adds a path that doesn't depend on that NSS, so Google Chrome and other Chromium builds trust the instances too, and Chromium trust doesn't hang on a nixpkgs packaging detail.

Checks

  • check (nix flake check): all checks passed.
  • vm-test odoo-chromium --remote --quiet: passed (all 5 subtests).
  • vm-test odoo-firefox --remote --quiet: passed (the Firefox policy file moved into the shared environment.etc set).

Merge order

skills#18 (merged) → this PR → home: nix flake update modules, then the owner deploys beelink (clan machines update beelink). No new clan vars, and the CA is unchanged.

🤖 Generated with Claude Code

andrewthomaslee and others added 2 commits November 12, 2026 16:33
trustCertificate writes /etc/chromium/policies/managed/odoo-ca.json and
/etc/opt/chrome/policies/managed/odoo-ca.json with CACertificates (the
CA as base64 DER, built from the public ca.crt). A nixpkgs Chromium
already trusts security.pki through NSS, whose built-in roots NixOS
replaces with p11-kit; the policy does not depend on that NSS, so Google
Chrome and other builds trust the instances too.

The odoo-chromium VM test runs a user-installed Chromium (as on beelink)
through each path alone: system trust, the policy, and neither (refused),
plus an untrusted control.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@andrewthomaslee
andrewthomaslee enabled auto-merge (squash) November 12, 2026 22:37
@andrewthomaslee
andrewthomaslee merged commit f2205cd into main Nov 12, 2026
3 checks passed
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