certforge-connector is an open-source agent that automates certificate renewal for network devices — SBCs, voice gateways, load balancers — that live on private management VLANs unreachable by CertForge directly.
GitHub: CertForge-LLC/certforge-connector
How it works
Prerequisites
- A CertForge account with at least one CA configured
- The device registered under Integrations → Network Devices in CertForge
- A connector API key (see below)
- TCP access from the connector host to the device management IP on its configured port (default 443)
Step 1 — Create a connector API key
The connector authenticates to CertForge with a scoped API key. These keys can only reach the/api/v1/connector/ endpoints.
- Go to Settings → API Keys
- Click New API Key
- Give it a descriptive name (e.g.
office-connector) - Check the connector scope
- Click Create
- Copy the key — it is shown once only
Step 2 — Register devices in CertForge
Before the connector can renew a device cert, the device must be registered in CertForge:- Go to Integrations → Network Devices
- Click Register Device
- Enter the device’s name, management IP, port, device type, and credentials
- Click Save
Step 3 — Install the connector
Binary (recommended)
Download the pre-built binary for your platform from the latest release:Windows
Docker
--network host is required so the connector can reach devices on private management VLANs.
Azure Container Instances
To reach devices on a private Azure VNet (F5 BIG-IP, Ribbon SBC, etc.), deploy the connector as an Azure Container Instance inside that VNet. No inbound ports are required. See Connector in Azure for the full step-by-step guide.Step 4 — Configure
Createcertforge-connector.yaml (start from certforge-connector.yaml.example in the release):
Local credential override (optional)
If you store device credentials in a local secrets manager rather than in CertForge, you can supply them via thedevices: block. List one entry per device with the CertForge device UUID, username, and password. All other details come from CertForge automatically.
devices: block entirely.
Step 5 — Run
Test (manual):/etc/certforge-connector/env:
What the connector reports
Once running, the connector performs the following automatically:Background cert discovery
On startup and every 6 hours, the connector TLS-dials each registered device and reads the leaf certificate — no device credentials needed. It reports the cert’s expiry date, Common Name, and SANs back to CertForge. CertForge uses this to populate the Expires, DTP, and Renewal in columns on the Network Devices page before any renewal job has run.On-demand cert query
From the Network Devices page, clicking Query Cert creates apending_query job. The connector picks it up on its next poll and immediately reads and reports the current certificate.
Certificate renewal
When a cert enters its renewal window (configured in the matching Domain Trust Profile), CertForge creates a renewal job:- Connector polls
GET /api/v1/connector/jobsand receives the job with device connection details and credentials - Connector authenticates to the device and pulls the CSR
- CSR is submitted to CertForge; CertForge signs it with the configured CA
- Connector installs the signed certificate on the device
- Connector posts job completion; CertForge schedules the next renewal
On-prem CA signing (optional)
By default, CSRs are sent to CertForge for signing. If your signing CA is on-prem and you do not want CSRs leaving the network, you can configure the connector to sign locally while still enforcing your Domain Trust Policy through CertForge.How governed local signing works
Before signing any certificate, the connector calls CertForge to validate:- The device’s domain matches a Domain Trust Policy
- The DTP is linked to the correct on-prem CA
- Key strength and wildcard policy are satisfied
Setup
- Go to Settings → CA Connectors and add a Private / Internal CA (On-Prem Agent) connector. This automatically creates a CA record in CertForge that can be referenced in Issuance Profiles and Domain Trust Policies.
- Create an Issuance Profile pointing to this CA, then assign it in a Domain Trust Policy covering your device domains.
-
Add the CA key and certificate to
certforge-connector.yaml. Use theca_connector_idfrom the CA connector record in CertForge:
private_cas: to list them:
CA inventory sync
Whenca_connector_id is set, the connector can also push the CA’s issued certificate inventory into CertForge Discovery. Add an inventory source to the private_ca block:
File-based CAs (OpenSSL, Easy-RSA, cfssl):
governance_status=tracked.
Supported device types
The Device Type dropdown in CertForge is populated automatically from the types the running connector reports — no manual entry and no CertForge update required to support a new driver.
Additional drivers can be added by implementing the
Device interface. See Adding a device type in the connector README.
Monitoring connector activity
In CertForge, each device shows:
Inactive devices are excluded from connector job lists — the connector will not attempt renewal or query jobs for them.
Troubleshooting
Connector connects but devices show no cert data- Verify TCP access from the connector host to the device management IP and port
- Check the device is set to Active on the Network Devices page
- Run manually (
certforge-connector -config certforge-connector.yaml) to see log output
tls: internal error on cert read
The device management interface may use a self-signed certificate. Set skip_verify: true in the device registration form in CertForge for that device.
Jobs are created but never picked up
The connector polls every poll_interval (default 30s). If jobs remain pending after a few cycles, check:
- Connector is running and can reach
app.certgov.app - API key has the
connectorscope - Device is set to Active in CertForge
connector.cert_signed events. If the CSR was submitted and signed but install failed, the connector log will show the device API error.
Local signing denied by CertForge
If you see local signing denied in the connector log, check:
- The device domain matches a Domain Trust Policy
- The DTP is linked to the on-prem CA connector record
- The
ca_connector_idincertforge-connector.yamlmatches the record in CertForge
private CA has no ca_connector_id at startup
The connector refuses to start if a private_ca or private_cas entry lacks ca_connector_id. Add the connector record in CertForge (Settings → CA Connectors), copy its ID, and add ca_connector_id: <id> to the YAML entry. See On-prem CA signing above.
Security
Firewall / egress requirements
The connector requires outbound HTTPS (port 443) only — no inbound ports are needed.Local credential overrides
If you supply device credentials via thedevices: block in YAML (rather than storing them in CertForge), treat this as an advanced, higher-risk configuration:
- Use environment variable expansion (
$SBC1_PASSWORD) — never hardcode secrets in the file. - Restrict YAML file permissions (
chmod 600 certforge-connector.yaml) so only the connector process can read it. - The preferred path is to store credentials in CertForge, which encrypts them at rest (AES-256-GCM) and delivers them only at job time. YAML overrides are intended for environments where credentials must come from a local secrets manager.
TLS to devices
skip_verify: true disables TLS certificate checking for device management connections. It should only be used when the device uses a self-signed management certificate and you cannot install a trusted CA for it. Surface this prominently in device inventories and plan to replace self-signed management certs where possible.