Skip to content

Supported platforms ​

CertPilot's host agent installs certificates on the platforms listed below. Each page covers the configuration required, the commands the agent runs, and the limitations that apply.

PlatformTypeNotes
nginxWeb serverReloads without dropping connections
Apache httpdWeb serverGraceful restart completes in-flight requests
HAProxyLoad balancerRequires certificate and key in a single file
CaddyWeb serverRequires auto_https off
Apache TomcatJava application serverRequires a PKCS#12 keystore
PostgreSQLDatabaseReloads without a restart
MariaDB and MySQLDatabaseReloads via FLUSH SSL
PostfixMail transfer agentCertificate presented on port 25
DovecotIMAP and POP3 serverCertificate presented to mail clients
Microsoft IISWeb serverWindows. Imports into the certificate store; reads no file

A platform is listed here only after it has been tested. Platforms that have not been tested are not listed, which does not mean they cannot be used — see Unlisted platforms below.

How platforms are tested ​

Each Linux platform has an automated test, run by make verify-profiles. It needs a container runtime, so it is run on demand rather than in CI. For each platform, the test:

  1. Starts the service in a container with an initial certificate.
  2. Installs a second, different certificate using the agent.
  3. Runs the platform's configuration check and reload commands.
  4. Opens a TLS connection from outside the container and confirms the service returns the newly installed certificate and its chain.

IIS cannot run in a container and is tested in CI on a Windows runner instead, to the same standard: install, then renew, then a deliberately unprovable install, with a TLS handshake from outside after each. See how this platform is tested.

The versions each platform was last tested against are recorded in the agent and shown by certpilot-agent profiles <name>.

Configuration check coverage ​

Before reloading a service, the agent runs that platform's configuration check command. If the check fails, the previous certificate is restored and the service is not reloaded.

Check commands differ in what they detect. The table below records results measured by running each check against a live instance in three states.

Check commandMissing certificate fileCertificate and key mismatchSyntax error
nginx -tDetectedDetectedDetected
Apache configtestDetectedNot detectedDetected
HAProxy -cDetectedDetectedDetected
Caddy validateDetectedDetectedDetected
Dovecot doveconf -nNot detectedNot detectedDetected
Postfix checkNot detectedNot detectedDetected
PostgreSQLNo check command available
MariaDB and MySQLNo check command available
Apache TomcatNo check command available
Microsoft IISNo check command available; verify reconnects afterwards

Where a check command does not detect a fault, or does not exist, post-renewal verification provides the backstop: it reconnects to the endpoint after deployment and reports the certificate the service is actually serving.

Unlisted platforms ​

Platforms without a tested profile. Jetty, Kafka, Elasticsearch, Traefik, Redis, Prometheus and LiteSpeed are not listed because they have not been tested, not because they are unsupported. The agent requires only a file path, a format, a check command and a reload command, which can be specified manually. See agent.md for the configuration format.

Windows services other than IIS. Exchange, ADFS, Network Policy Server and Remote Desktop Services read from the same certificate store as IIS and differ only in the command that binds a thumbprint to them. Each is the IIS profile with a different bind, and none has been run by this project — see other consumers of the store. The Linux profiles above do not apply on Windows: each describes a service reloaded with systemctl, and naming one there is refused. See where the agent runs.

Appliances without a writable filesystem. F5 BIG-IP and Azure Key Vault are updated through their APIs by CertPilot Core rather than by the host agent. See deployment.md.