Tang/Clevis for laptops #30

Closed
opened 2026-10-17 20:21:24 +00:00 by rpickler · 1 comment
Owner

I want to install tang/clevis to automatically unlock encrypted laptops on my network like Kansas. An additional restriction is those laptops should be able to be unlocked at work as well. We'll implement that in SeesDeployment later.

@hermes-bot implement support for this on both Kansas, and using horse as the server.

I want to install tang/clevis to automatically unlock encrypted laptops on my network like Kansas. An additional restriction is those laptops should be able to be unlocked at work as well. We'll implement that in SeesDeployment later. @hermes-bot implement support for this on both Kansas, and using horse as the server.
Member

Implemented in #31 (branch issue-30-tang-clevis):

  • horse runs the Tang server (rpickler.tang-server.enable) — nixpkgs services.tang on :7654, restricted by systemd IPAddressAllow to the LAN + wireguard ranges; keys auto-generate on first advertisement.
  • kansas gets the Clevis client (rpickler.tang-client.enable) — per-host JWE wired into boot.initrd.clevis with the tang pin, DHCP in the initrd, dock/adapter NIC modules. Passphrase fallback stays intact (slot is never removed), so booting off-LAN still prompts.
  • Enabling the client is a no-op + build warning until hosts/clevis/kansas-tang-home.jwe is enrolled, so the PR is safe to merge ahead of enrollment.
  • modules/tang/README.md has the one-time enrollment runbook (LUKS slot + thumbprint-pinned clevis encrypt tang, LAN + horse.vpn URLs embedded), verification, rotation, and the phase-2 hook for work-reachable unlock — a second *-tang-work.jwe slot on a work-side tang is a drop-in for the SeesDeployment phase.

Next steps (need a physical console on kansas): enroll on the home LAN, commit the JWE, rebuild, then test on-LAN reboot (unattended) and off-LAN reboot (prompt).

Implemented in #31 (branch `issue-30-tang-clevis`): - **horse** runs the Tang server (`rpickler.tang-server.enable`) — nixpkgs `services.tang` on :7654, restricted by systemd `IPAddressAllow` to the LAN + wireguard ranges; keys auto-generate on first advertisement. - **kansas** gets the Clevis client (`rpickler.tang-client.enable`) — per-host JWE wired into `boot.initrd.clevis` with the tang pin, DHCP in the initrd, dock/adapter NIC modules. Passphrase fallback stays intact (slot is never removed), so booting off-LAN still prompts. - Enabling the client is a no-op + build warning until `hosts/clevis/kansas-tang-home.jwe` is enrolled, so the PR is safe to merge ahead of enrollment. - `modules/tang/README.md` has the one-time enrollment runbook (LUKS slot + thumbprint-pinned `clevis encrypt tang`, LAN + `horse.vpn` URLs embedded), verification, rotation, and the phase-2 hook for work-reachable unlock — a second `*-tang-work.jwe` slot on a work-side tang is a drop-in for the SeesDeployment phase. Next steps (need a physical console on kansas): enroll on the home LAN, commit the JWE, rebuild, then test on-LAN reboot (unattended) and off-LAN reboot (prompt).
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
richardpickler.com/nixos#30
No description provided.