aethercert
Dokumentation
Referenz

File locations

Where every binary, configuration file, log and script lives on a managed host, per platform, plus the service names.

Everything aethercert installs lives under one root per platform, with a subdirectory per component.

LinuxWindows
Install root/opt/aethercert-agentC:\Program Files\aethercert
Data root/var/lib/aethercert-agentC:\ProgramData\aethercert

The Linux agent is the one exception to the data root: its configuration and state sit under /etc/aethercert-agent/agent/, where a system configuration file belongs.

Binaries

ComponentLinuxWindows
Fleet agent/opt/aethercert-agent/aethercert-agentC:\Program Files\aethercert\agent\aethercert-agent.exe
CA connectornot applicableC:\Program Files\aethercert\ca-connector\aethercert-ca-connector.exe
Certificate connector/opt/aethercert-agent/cert-connector/aethercert-cert-connectorC:\Program Files\aethercert\cert-connector\aethercert-cert-connector.exe
Update Service/opt/aethercert-agent/main/aethercert-update-serviceC:\Program Files\aethercert\main\aethercert-update-service.exe
Traynot applicableC:\Program Files\aethercert\main\aethercert-tray.exe

The tray and the Update Service share a main directory because neither is scoped to one product: the tray covers both backends, and the Update Service updates both.

Configuration and state

ComponentLinuxWindows
Agent config/etc/aethercert-agent/agent/config.jsonC:\ProgramData\aethercert\agent\config.json
Agent state/etc/aethercert-agent/agent/C:\ProgramData\aethercert\agent\
Agent scripts/etc/aethercert-agent/agent/scripts/C:\ProgramData\aethercert\agent\scripts\
CA connector confignot applicableC:\ProgramData\aethercert\ca-connector\config.json
Certificate connector config and key store/etc/aethercert-agent/cert-connector/C:\ProgramData\aethercert\cert-connector\
Update Service state/var/lib/aethercert-agent/main/C:\ProgramData\aethercert\main\
Tray statenot applicable%LOCALAPPDATA%\aethercert\tray\ (per user)
Installer state/var/lib/aethercert-agent/setup/C:\ProgramData\aethercert\setup\

State includes the ACME account key and the cached certificate material the agent keeps so a redeployment does not have to reissue. On Linux, config.json is written 0600 inside a 0700 directory; private keys are written the same way. On Windows, where file modes do not apply, every component restricts its state directory every time it starts (from 2026.10.7.0.0): SYSTEM, Administrators and - if the service runs under its own account - that account; only logs\ stays readable for other local users. The data root C:\ProgramData\aethercert itself belongs to Administrators, and other users may read it but not create anything in it. A link that a non-administrator put into one of these directories is deleted; if a component's whole directory is such a link, the service refuses to start, and aethercert-installer repair names the link. To add a deploy script to scripts\, use an elevated prompt or accept Explorer's administrator prompt.

The Update Service has no config.json of its own - it reads whichever backend's config is already on the host.

The installer's state directory sits outside the others on purpose: an uninstall that deletes the agent's directory must not also delete the log explaining what it just removed.

Logs

One file per UTC day in logs/ inside each component's state directory, with the previous day compressed into logs/archive/:

<state directory>/logs/2026-09-06.log
<state directory>/logs/archive/2026-09-05.tar.gz

Retention follows the plan - see Logs and diagnostics.

Services

ComponentLinux unitWindows service
Fleet agentaethercertagent.serviceAetherCertAgent
CA connectornot applicableAetherCertCAConnector
Certificate connectoraethercertcertconnector.serviceAetherCertCertConnector
Update Serviceaethercertupdateservice.serviceAetherCertUpdateService

The Linux unit names are the Windows service names lowercased, because systemd unit names are conventionally lowercase while services.msc shows mixed case. The units live in /etc/systemd/system/ and carry Restart=on-failure, RestartSec=5 and AmbientCapabilities=CAP_NET_BIND_SERVICE, and from 2026.10.7.0.0 a sandbox per component - see systemd sandbox below.

systemd sandbox

Each Linux unit restricts its service as far as that service's job allows:

UnitWhat it may not do
aethercertcertconnectorWrite anywhere but /etc/aethercert-agent/cert-connector/, use any capability but binding a port below 1024, gain privileges, open a Unix socket, see /home, devices or other processes, load kernel modules.
aethercertagentLoad kernel modules, read the kernel log, change its execution domain, use realtime scheduling, reboot, set the clock. Nothing else: it runs your deploy scripts as root, and anything stricter could stop a script from writing where your certificates go.
aethercertupdateserviceAs the agent, and it has its own /tmp.

The Update Service brings the units of an existing installation up to date on its next check; each service runs under its new unit from its next restart, which the next update does. A unit you edited by hand is left alone - put your own settings in a drop-in instead, which nothing of aethercert ever touches:

sudo systemctl edit aethercertagent        # opens a drop-in for your settings
sudo systemctl restart aethercertagent

A drop-in can switch a setting off (ProtectKernelModules=no), or tighten the agent on a host whose deploy targets you know - for example ProtectSystem=strict with a ReadWritePaths= line for /etc/aethercert-agent/agent and every directory your certificates, webroots and scripts write to. Run a deployment after any change.

systemctl status aethercertagent
journalctl -u aethercertagent -f

The Windows tray is launched for the logged-in user from an HKLM Run key rather than as a service, because it needs an interactive session.

Legacy paths

A host installed before the unified layout has its components under their own top-level folders - AetherCertAgent, AetherCertCAConnector, AetherCertUpdateService under Program Files and ProgramData, and /usr/local/bin plus /etc/aethercert-agent/config.json on Linux. The Update Service migrates such an installation onto the layout above on its own; nothing has to be re-enrolled.

What an uninstall removes

uninstall without --purge stops and removes the services and leaves everything above in place, so a later install reuses the host's existing enrollment. --purge deletes the binaries, configuration and logs as well, and cleans up the now-empty roots.

Certificates already deployed - files at the paths a deploy target wrote to, entries in the Windows certificate store - are never touched by either.

Auf dieser Seite