Skip to main content

NetBox plugin for TLS/SSL certificate management - Project Janus

Project description

NetBox SSL Plugin

Project Janus โ€” Your Single Source of Truth for TLS/SSL certificate management in NetBox

PyPI Python CI License NetBox Beta

Named after Janus, the Roman god of doorways and transitions โ€” because every certificate guards a doorway, and every renewal is a transition.


NetBox SSL Certificate List

โœจ Why NetBox SSL?

Managing SSL certificates across your infrastructure shouldn't be a scavenger hunt. NetBox SSL brings visibility and control to your certificate lifecycle:

  • ๐Ÿ” See everything at a glance โ€” Know which certificates are expiring, where they're deployed, and who owns them
  • ๐Ÿ”„ Painless renewals โ€” The Janus workflow transfers all assignments automatically when you renew
  • ๐Ÿ”’ Security first โ€” Private keys are never stored, only location hints for your secret management system
  • ๐ŸŽฏ Deep integration โ€” Certificates link directly to NetBox Services, Devices, and VMs

๐Ÿš€ Quick Start

pip install netbox-ssl

Add to your configuration.py:

PLUGINS = ["netbox_ssl"]

Run migrations and restart NetBox:

python manage.py migrate netbox_ssl
sudo systemctl restart netbox netbox-rq

That's it! Navigate to Plugins > SSL Certificates in your NetBox.

๐Ÿ“– Full documentation: docs/

โš™๏ธ Configuration

Customize the plugin via PLUGINS_CONFIG in your configuration.py:

PLUGINS_CONFIG = {
    "netbox_ssl": {
        "expiry_warning_days": 30,   # Days before expiry โ†’ Warning status
        "expiry_critical_days": 14,  # Days before expiry โ†’ Critical status
    },
}
Option Type Default Description
expiry_warning_days Integer 30 Certificates expiring within this many days show warning status
expiry_critical_days Integer 14 Certificates expiring within this many days show critical status

See Configuration for more options including custom fields, permissions, and webhooks.

๐Ÿ“ธ Screenshots

Certificate Detail
Certificate details with validity and assignments
Smart Import
Smart Paste import with automatic X.509 parsing
Dashboard Widget
Dashboard widget showing certificate health
Assignments
Track which certificates are assigned where

๐ŸŽฏ Key Features

Smart Paste Import

Just paste your PEM certificate โ€” the plugin extracts everything automatically: Common Name, SANs, validity dates, issuer chain, fingerprints, and more.

Janus Renewal Workflow

When you import a renewed certificate (same CN as an existing one), the plugin offers to:

  • Preview assignments that will be transferred in a detailed table
  • Transfer all assignments from the old certificate atomically
  • Archive the old certificate with "Replaced" status
  • Link them together for audit trail

Start a renewal directly from the certificate detail page with the Renew button.

Certificate Authority Tracking

Track your CAs (Let's Encrypt, DigiCert, Sectigo, internal CAs) with automatic detection based on issuer patterns.

Certificate Signing Requests (CSR)

Track pending certificate requests through their lifecycle: Pending, Approved, Rejected, Issued.

Chain Validation

Validate certificate chains for completeness, signature correctness, and expiry.

Compliance Reporting

Define compliance policies (minimum key size, forbidden algorithms, max validity, etc.) and run checks across your certificate inventory. 10 built-in policy types with severity levels and scoring.

Data Export

Export certificates in CSV, JSON, YAML, or PEM bundle format with configurable field selection.

ACME Certificate Tracking

Track Let's Encrypt and other ACME-issued certificates with auto-detection, renewal status, and provider metadata.

Certificate Assignments

Link certificates to the objects that use them:

  • Services (recommended) โ€” Port-level granularity (e.g., HTTPS on port 443)
  • Devices โ€” Physical servers and appliances
  • Virtual Machines โ€” VMs in your virtualization clusters

Expiry Dashboard Widget

Add the widget to your NetBox dashboard to see:

  • ๐Ÿ”ด Critical โ€” Expiring within 14 days
  • ๐ŸŸ  Warning โ€” Expiring within 30 days
  • โšซ Orphan โ€” Certificates without assignments

Security by Design

  • No private key storage โ€” Private keys never touch the database
  • Private key rejection โ€” PEM input with private keys is blocked
  • Key location hints โ€” Document where keys are stored (e.g., vault:secret/certs/example.com)

๐Ÿ“Š Compatibility

NetBox Version Plugin Version Status
4.5.x 0.4.x โœ… Primary
4.4.x 0.4.x โœ… Supported
4.3.x and older โ€” โŒ Unsupported

๐Ÿ“š Documentation

Full documentation is available in the docs/ folder:

๐Ÿ› ๏ธ Development

# Clone and start development environment
git clone https://github.com/ctrl-alt-automate/netbox-ssl.git
cd netbox-ssl
docker compose up -d

# Access NetBox at http://localhost:8000
# Login: admin / admin

See CONTRIBUTING.md for more details.

๐Ÿค Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch from dev
  3. Make your changes with tests
  4. Submit a pull request

๐Ÿ“„ License

Apache License 2.0

๐Ÿ™ Acknowledgments

  • The NetBox community for the excellent plugin framework
  • The cryptography library for robust X.509 parsing

Project details


Download files

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

Source Distribution

netbox_ssl-0.4.0.tar.gz (119.2 kB view details)

Uploaded Source

Built Distribution

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

netbox_ssl-0.4.0-py3-none-any.whl (93.6 kB view details)

Uploaded Python 3

File details

Details for the file netbox_ssl-0.4.0.tar.gz.

File metadata

  • Download URL: netbox_ssl-0.4.0.tar.gz
  • Upload date:
  • Size: 119.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for netbox_ssl-0.4.0.tar.gz
Algorithm Hash digest
SHA256 b029a04d12a18c964b5ade0e7539e12390a53dcbc230cea29204a6386529ffdb
MD5 fbe2fbf8ce786561bc17dddc3e0def23
BLAKE2b-256 fa710e6c6c0f804df66d2e0a0f8001ba34b7f14a559a10a82f6f2b7677f22b68

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbox_ssl-0.4.0.tar.gz:

Publisher: publish.yml on ctrl-alt-automate/netbox-ssl

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_ssl-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: netbox_ssl-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 93.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for netbox_ssl-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5d7c9e5efc774d2639521b4864bd160b2311ac28dcc046b27a2265c13f9ca007
MD5 9dd0f35242f8e4f04204d18669d27a75
BLAKE2b-256 43118671f916fa57ca98b2294c46ef72e7a5a30c8bed83335dafb1a945781058

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbox_ssl-0.4.0-py3-none-any.whl:

Publisher: publish.yml on ctrl-alt-automate/netbox-ssl

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page