Files
fips/packaging/windows
Johnathan Corgan ce19d5bd23 Use C:\ProgramData\fips for Windows config, keys and peer ACLs
On Windows the config directory, the key directory and the peer ACL
defaults disagreed. SYSTEM_CONFIG_DIR and the ACL defaults resolved to
/etc/fips on the current drive, the search path never probed the
directory the service installer writes to, and fipsctl keygen wrote to
the per-user %APPDATA%\fips. A service started before a reboot found
none of the installed files and ran on defaults, and a peers.deny placed
beside the hosts file in C:\ProgramData\fips was never read, so the ACL
failed open.

Windows now uses C:\ProgramData\fips for all of them, the directory the
hosts file and the service installer already use, and the search path
probes it before the per-user config. A key left in %APPDATA%\fips is
still picked up when the new directory has none, by the daemon and by
fipsctl address, with a note to move it. The daemon warns when it ran on
a config found only in %APPDATA%\fips, which the service never reads.
fipsctl keygen points at a key left in %APPDATA%\fips, and
--install-service names the file the service reads.

A peers.allow or peers.deny left at the old /etc/fips location would
otherwise be dropped on upgrade, and a dropped deny list fails open. For
one release the daemon keeps reading each file from /etc/fips, resolved
against the current drive exactly as before, when it is not at the new
location, and warns naming both paths and asking for it to be moved.
When both exist the new file is read and the warning says the old one
is ignored. The choice is made per file and re-checked on every ACL
reload, so moving, adding or removing a file takes effect without a
restart, including a copy that keeps the old file's modification time.
The fallback is meant to be removed in a later release.

Linux, macOS and FreeBSD paths are unchanged.

The Windows ZIP's README told users to put fips.yaml beside fips.exe or
in %APPDATA%\fips, neither of which the service reads, and the reference
docs gave %APPDATA%\fips as fipsctl keygen's default. The README now
says the service reads C:\ProgramData\fips\fips.yaml and keeps the key,
hosts and peer ACL files beside it, and describes the per-user files a
foreground run also reads. The reference docs list C:\ProgramData\fips
as the Windows system config directory and keygen default.
2026-09-24 23:12:45 +00:00
..