Signed Certificate Support

Audience: IT administrators deploying or managing Keeper Endpoint Privilege Manager (KEPM). This page explains how KEPM uses digital certificates to secure internal communications, authenticate plugins and executables, and how to configure custom or alternative certificates for your environment.
Overview
Certificates in KEPM serve two complementary purposes:
Transport Security — KEPM's internal management API (HTTPS) and its internal message broker (MQTT) are both encrypted using TLS. Certificates are the foundation of that encryption.
Component Authentication — Before a plugin, job executable, or custom tool can connect to the agent's management API or message bus, KEPM validates that the executable is digitally signed by a trusted certificate. This prevents unauthorized code from interacting with privileged services.
Both of these mechanisms are active by default and require no initial configuration for most deployments.
Default Certificate Behavior
Automatic Self-Signed Certificate Generation
At startup, KeeperPrivilegeManager automatically generates a self-signed X.509 certificate if no custom certificate is configured. This certificate is used for:
The HTTPS management API (default port
6889)The MQTT message broker (default port
8675)
Default certificate properties:
Subject
Localhost
Key Usage
Server Authentication (OID 1.3.6.1.5.5.7.3.1)
Binding
Localhost / 127.0.0.1 only
Storage
In-memory (regenerated on each service restart)
Validity
Long-term
Because all communication is bound to localhost only, self-signed certificates are appropriate and secure for this use case. The agent's API and message bus are not exposed to the network.
Note: Because the certificate is regenerated on each restart, clients that pin the certificate (e.g., custom scripts or monitoring tools) will need to re-trust it after service restarts. For environments that require a stable, pinned certificate, see Custom Certificates below.
Plugin & Executable Certificate Validation
How KEPM Validates Components
Every plugin and executable that communicates with KEPM's management API or message bus must be digitally signed by a certificate that KEPM trusts. This is a core security control: it ensures that only Keeper-issued or explicitly approved code can interact with the privileged agent.
The validation process (per component):
KEPM extracts the digital signature from the plugin or executable.
It compares the certificate thumbprint against its list of trusted certificates.
If the thumbprint matches, the component is permitted to connect.
If no match is found, the connection is rejected and an error is logged.
Trusted certificate sources:
KeeperPrivilegeManager certificate
Extracted automatically from the service executable itself. All Keeper-signed plugins are trusted by default.
Alternative certificates
Thumbprints you add to Settings:AlternativeSignatures in appsettings.json for your own tools or enterprise-signed components.
Alternative Signatures
The AlternativeSignatures setting allows you to register additional trusted certificate thumbprints. This is used when:
You have custom tools (e.g., automation scripts packaged as executables) that need to communicate with KEPM.
You deploy KEPM components that are re-signed by your own enterprise code-signing certificate.
You are developing or testing custom plugins or job executables.
Configuring Alternative Signatures
Step 1: Obtain the certificate thumbprint.
On Windows (PowerShell):
powershell
On Linux / macOS:
bash
Format: Remove all spaces and colons from the thumbprint before adding it to configuration. Use uppercase for readability (the system is case-insensitive). Example:
A1B2C3D4E5F6789012345678901234567890ABCD
Step 2: Add the thumbprint to appsettings.json.
json
Step 3: Restart the KeeperPrivilegeManager service to apply the change.
Important: A service restart is required after any modification to
appsettings.json.
Security Best Practices for Alternative Signatures
Keep the list minimal. Only add thumbprints for certificates you explicitly trust. Each entry expands the set of code that can interact with privileged services.
Document your entries. Note which certificate belongs to which tool and who issued it.
Review periodically. Remove certificates that are no longer needed or have expired.
Never store certificate passwords in configuration files. Use the Windows Certificate Store or a secure credential manager instead.
Custom Certificates
Note: Full custom certificate configuration for HTTPS and MQTT endpoints is planned for future KEPM versions. The following describes the expected configuration model.
When custom certificate support becomes available, you will be able to configure a specific certificate for the management API and MQTT broker rather than using the auto-generated self-signed certificate. This is intended for environments that require a stable, CA-issued, or internally managed certificate.
Expected configuration in appsettings.json:
json
CertPath
Path to a .pfx (Windows) or .pem (Linux/macOS) certificate file.
CertPassword
Password for the certificate file. Do not store this in plain text in production. Use the Windows Certificate Store or a secrets manager instead.
CertStore
Windows certificate store location: My (Personal), Root (Trusted Root), or Trust (Trusted Publishers).
CertName
Friendly name of the certificate in the Windows store.
Supported certificate formats:
.pfx/ PKCS#12 — Windows.pem— Linux and macOSWindows Certificate Store — Windows (via
CertStore+CertName)
Certificate Renewal
Self-Signed Certificates (Default)
No manual action is required. KEPM regenerates the self-signed certificate automatically each time the service starts. There is no expiration concern in normal operation.
Custom Certificates
When using a custom certificate, manage renewals according to your organization's certificate lifecycle process:
Obtain the renewed certificate from your Certificate Authority (CA).
Install it (to the certificate file path or Windows store as appropriate).
Update
appsettings.jsonif the path, name, or thumbprint has changed.Restart the KeeperPrivilegeManager service.
If the thumbprint changed, update
AlternativeSignaturesinappsettings.jsonfor any tools or plugins that relied on the old certificate.Validate that plugins start successfully and that any custom tools can still connect.
Best Practice: Renew certificates before they expire and test the renewal process in a non-production environment first.
How Certificates Interact with the KEPM Security Model
Certificate validation is one layer within KEPM's broader defense-in-depth approach:
Transport encryption
TLS certificates encrypt HTTPS (port 6889) and MQTT (port 8675) traffic between the service and its components. All traffic stays on localhost.
Plugin authentication
Plugins loaded from Plugins/*.json must be signed by a trusted certificate. The service validates each plugin's signature before starting it.
API authorization
Callers of the management API at the Plugin authorization level must present a valid certificate (signed by KEPM or an alternative trusted certificate) in addition to being launched by KEPM. The Admin authorization level requires a valid certificate and admin privileges; it does not require the process to have been launched by KEPM.
MQTT broker access
Only processes launched by KEPM that present a valid certificate identity are permitted to connect to the embedded MQTT broker. Arbitrary applications cannot connect.
This means that even if a malicious application is running on the same machine, it cannot interact with the KEPM agent unless it carries a certificate thumbprint that you have explicitly trusted.
Troubleshooting
Plugins Fail to Start with Certificate Errors
Symptoms: A plugin does not start; certificate-related errors appear in the log.
Steps:
Verify the plugin executable is digitally signed. On Windows:
Get-AuthenticodeSignature "plugin.exe".Confirm the certificate thumbprint matches an entry in
AlternativeSignatures(if the plugin is not signed by Keeper's certificate).Check that the certificate itself is valid (not expired, not revoked).
Restart the service after any configuration changes.
Custom Tools Receive 401 / 403 from the HTTP API
Symptoms: A custom executable or script gets an authorization error when calling the local management API.
Steps:
Verify the executable is digitally signed with a code-signing certificate.
Confirm the certificate thumbprint is correctly formatted (no spaces, uppercase) and present in
Settings:AlternativeSignatures.Confirm you restarted the service after adding the thumbprint.
Check that the certificate has not expired.
Clients Cannot Connect to HTTPS Endpoints
Symptoms: Browsers, scripts, or tools that call https://localhost:6889/... report a certificate error.
Steps:
If using the default self-signed certificate: configure your client to accept the self-signed certificate for
localhost. This is expected behavior.If using a custom certificate: verify the certificate file exists at the configured path and is accessible by the service.
Check service logs for certificate generation or load errors at startup.
Certificate Not Found at Startup
Symptoms: The service fails to start with a certificate-related error.
Steps:
Verify the path in
CertPathis correct and the file exists.Check file permissions — the KEPM service account must be able to read the certificate file.
On Windows, if using the certificate store, confirm the certificate name in
CertNamematches exactly.
Last updated
Was this helpful?

