Skip to main content

NetBox Certificates Plugin

NetBox Certificates Plugin adds certificate inventory and lifecycle management to NetBox. It manages X.509 certificates, encrypted private keys, CSRs, bundles, service relationships, certificate health, configurable checks, alerting, imports, secure exports, and links to native NetBox objects.

Compatibility

Component Supported
NetBox 4.5.9, 4.5.10
Python 3.12+
cryptography 42+
Release 1.2.0
Upgrade source 1.1.2 (older migrations retained)

Features

  • X.509 certificate inventory with parsed subject, issuer, SAN, validity, fingerprint, signature, key, and CA metadata
  • encrypted private-key storage
  • CSR inventory and generation using a new or existing private key
  • certificate/key/CSR bundles with cryptographic identity validation
  • Certificate Authorities view for imported CA certificates
  • hierarchical Groups with expandable subgroups and visible member objects, plus selection for bulk operations
  • Services for modeling certificate consumers and deployment metadata
  • many-to-many Service relationships to Certificates, Private Keys, CSRs, Bundles, and Groups
  • generic links from plugin objects to native NetBox objects such as Devices, VMs, Interfaces, IP Addresses, Sites, Circuits, VLANs, VRFs, Tenants, and Clusters
  • minimal global certificate checks within Alerts Configuration
  • Health and Validity findings for expiration, chain problems, weak algorithms, duplicates, mismatches, orphaned objects, Service/SAN conflicts, and key reuse
  • configurable SMTP and webhook alerts based on Health findings
  • unified object import for PEM, DER, PKCS#7/CMS, PKCS#12/PFX, and supported archives
  • NetBox-native filters, saved filters, metadata export, bulk edit, bulk delete, tags, custom fields, ownership, change logging, REST API, GraphQL, and global search
  • secure material export with SHA-256 manifests

Navigation

OVERVIEW
├── Certificate Authorities
├── Cryptographic Vault
└── Health and Validity

INVENTORY
├── Groups
├── Services
├── Bundles
├── Certificates
├── Private Keys
└── CSRs

OPERATIONS
├── Import Objects
├── Generate CSR
└── Alerts Configuration

Services

A Service represents a system or endpoint that consumes certificate material. Examples include websites, APIs, repositories, reverse proxies, load balancers, Kubernetes endpoints, mail systems, VPNs, databases, registries, and internal applications.

Service metadata includes status, type, environment, deployment, deployment metadata, protocol, URLs, hostname, port, SNI name, criticality, external reference, contact, owner, tags, custom fields, description, and comments.

deployment provides a dropdown of common technologies and a custom-name option. Protocols use dropdowns and default ports; a primary URL fills blank hostname/SNI/port fields. Additional URLs use one URL per line. All fields stay visible. Certificates, private keys, CSRs, and bundles share one Cryptographic artifacts section; organization, endpoints, and metadata have their own sections. deployment_metadata stores deployment-specific structured metadata such as a namespace, secret name, ingress name, virtual host, or configuration reference.

Certificate Authorities

The Certificate Authorities view lists imported Certificate objects with X.509 CA=true, including roots, intermediates, and subordinate CAs. The dedicated Import CA Certificates action accepts only X.509 Basic Constraints CA=true. Leaf certificates, certificates without that extension, keys, CSRs, and mixed CA/non-CA uploads are rejected before saving anything. Root and chain resolution are maintained internally from certificate relationships.

Cryptographic Vault

Cryptographic Vault uses a responsive, neutral layout with clickable inventory cards, service-assignment counts, and health categories. It provides a consolidated overview of Certificates, CA Certificates, Private Keys, CSRs, Bundles, Services, unassigned objects, and active Health findings.

Health and Validity

The combined page shows expiration counts, upcoming/expired certificates, findings, filtering and a health-scan action. The old Expiration Dashboard URL redirects here.

Health findings are persistent, searchable NetBox objects with severity, status, evidence, affected object, related object, and detection timestamps.

Checks include:

  • certificate expiration and not-yet-valid state
  • certificate-chain resolution and issuer validation
  • expired or invalid issuers
  • ambiguous issuers and chain loops
  • weak RSA, elliptic-curve, DSA, and signature configurations
  • duplicate Certificates, Private Keys, CSRs, and Bundles
  • incomplete or mismatched Bundles
  • orphaned private keys
  • Certificate/Private Key/CSR relationship mismatches
  • Service hostname, URL, and SNI coverage against certificate SANs
  • private-key reuse across Services
  • non-wildcard certificate reuse across unrelated Service endpoints
  • configured certificate requirement violations

Certificate checks

Set minimum RSA size, optional maximum validity, SAN requirements, wildcard allowance, and key reuse handling directly in Alerts Configuration. These global settings apply to Certificates and CSRs; no separate policy definitions or assignments are needed. The settings are evaluated by health scans and violations can be selected as an alert category.

Alerts

Alerts Configuration is a single settings page for superusers: choose email/webhook delivery, categories and severities, cooldowns, repeats, and recovery alerts. Expiration alerts follow each certificate’s Alert Trigger and Trigger Unit, defaulting to 1 month. Both fields are available as certificate table columns. Clear both fields to disable expiration alerts for one certificate. Email and webhook TLS verification can be disabled independently for untrusted destinations. Existing rules remain available as advanced configuration.

Alert Rules select Health findings by code, category, severity, status, object type, tag, owner, Service or Group. Global expiration thresholds are no longer used.

Alert Channels support SMTP and HTTP webhooks. SMTP passwords and webhook configuration are encrypted at rest with the plugin Fernet key.

The always-visible Save and send test email and Save and send test webhook buttons save the submitted configuration and send a sample even when delivery is disabled. Results appear on the settings page.

Alert Events record delivery results.

Import

The unified importer supports:

  • PEM and DER X.509 certificates
  • private keys
  • PKCS#10 CSRs
  • PKCS#7/CMS containers
  • PKCS#12/PFX
  • supported archives
  • multiple unrelated objects in one request
  • multiple Bundle candidates grouped by matching public-key identity

Files are detected by content. Mixed uploads are validated before any writes, deduplicated by cryptographic identity, and linked after the complete batch is stored. Certificates, keys, CSRs, and bundles can be imported together across multiple archives. Invalid input or insufficient permissions rolls back the batch. The CA-only action rejects all non-CA content.

Limits are 64 MiB combined upload, 128 MiB expanded content, 10,000 counted files/objects, and three archive levels. See Imports for permissions, duplicate handling, relationship matching, and archive limits.

Export

Bundle export opens an options form. Choose separate files or PFX, optional PFX password protection, and whether to include the chain. Single bundles support ZIP/TAR; bulk bundles use ZIP. Exporting private keys still requires a superuser.

Export inventory in the Vault downloads selected object types together as one ZIP. It includes material for Certificates, Private Keys, CSRs, and Bundles and can include metadata for Groups, Services, Object Links, Health findings, and alert objects. Cryptographic files can be reimported together; metadata snapshots are for reference, not a replacement for a database backup.

NetBox-native export remains available for metadata tables. Empty exports show a warning; the API returns HTTP 200 with a warning and count: 0, without an attachment.

Material export is available for Certificates, Private Keys, CSRs, Bundles, and CA Certificates. Multi-file exports include manifest.json with object identifiers, applied filters, filenames, SHA-256 checksums, and available cryptographic fingerprints.

Private-key material is decrypted only for authorized downloads and is never included in ordinary metadata serializers, search indexes, filters, GraphQL metadata, or metadata archives.

REST API

Base path:

/api/plugins/ssl-certificates/

Primary endpoints:

groups/
services/
bundles/
certificates/
private-keys/
csrs/
certificate-authorities/
health-findings/
object-links/
alert-rules/
alert-channels/
alert-events/

See docs/API.md.

Installation

Add the package to /opt/netbox/local_requirements.txt:

netbox-certificates-plugin==1.2.0

Enable the plugin:

PLUGINS = [
    "netbox_certificates",
]

PLUGINS_CONFIG = {
    "netbox_certificates": {
        "encryption_key": "YOUR_FERNET_KEY",
    },
}

Generate a Fernet key for a new installation:

/opt/netbox/venv/bin/python - <<'PY'
from cryptography.fernet import Fernet
print(Fernet.generate_key().decode())
PY

Run the standard NetBox upgrade:

cd /opt/netbox
sudo ./upgrade.sh

Verify:

sudo -u netbox /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py check
sudo systemctl restart netbox netbox-rq

For upgrades from 1.0.5 or older versions, keep the existing Fernet key and read UPGRADE.md before deployment.

Security

  • private keys are encrypted at rest
  • SMTP passwords and webhook configuration are encrypted at rest
  • decrypted private-key material is excluded from normal API, GraphQL, search, filtering, and metadata exports
  • sensitive download responses use cache-prevention headers
  • multi-file exports include SHA-256 manifests
  • ObjectLinks are restricted to public NetBox/plugin models
  • sensitive material operations retain additional permission checks

See SECURITY.md.

Documentation

License

Apache-2.0. See LICENSE and NOTICE.

Release 1.2.0

This release consolidates certificate checks into Alerts Configuration, validates email/endpoint/port/CSR inputs in the UI and API, supports signing CSRs with an existing authorized key, improves Group spacing and action buttons, replaces empty downloads with warnings, and adds mixed inventory export. Large mixed imports detect content, reuse existing objects, and reconcile cryptographic relationships atomically. REST, GraphQL, search, permissions, migrations, and documentation reflect the retired policy model. See Upgrade before installing.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

netbox_certificates_plugin-1.2.0.tar.gz (219.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

netbox_certificates_plugin-1.2.0-py3-none-any.whl (225.4 kB view details)

Uploaded Python 3

File details

Details for the file netbox_certificates_plugin-1.2.0.tar.gz.

File metadata

File hashes

Hashes for netbox_certificates_plugin-1.2.0.tar.gz
Algorithm Hash digest
SHA256 7cd68682e00f4b54f0d76eb17a200b957948930dd68a0f0d1633b8fc2041011c
MD5 32c03b452e3e04177b1123ce4867e03b
BLAKE2b-256 73bde6fc01fbd2552f9adcdc07a02c793532a5f89f4fafcbe03a3f9965431572

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbox_certificates_plugin-1.2.0.tar.gz:

Publisher: release.yml on Fokkert/netbox-certificates-plugin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file netbox_certificates_plugin-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for netbox_certificates_plugin-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e1840e2118c5b65373fcf99a40496df6beac54c9849e4a9ae20abd8b12ebc355
MD5 2d3f1721f048da931502a2410b7c7e2a
BLAKE2b-256 f0073eaecbbbd6733cb1401f9065e12819cc090b0556ad97aaeb89cdbe03c5c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbox_certificates_plugin-1.2.0-py3-none-any.whl:

Publisher: release.yml on Fokkert/netbox-certificates-plugin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.3.2

2 files

1.3.1

2 files

1.3.0

2 files

This release

1.2.0 This release

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.5.0

2 files

0.4.11

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page