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.1.tar.gz (119.3 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.1-py3-none-any.whl (94.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: netbox_ssl-0.4.1.tar.gz
  • Upload date:
  • Size: 119.3 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.1.tar.gz
Algorithm Hash digest
SHA256 91e739f060ff924f6998f4a56edb3e2f64bd3e4ea09b71233bb5249534d580c5
MD5 2f6503d42047c30612b582031eff8af7
BLAKE2b-256 dca7e9584da3871f7d502779f19aeae7b8f824191381291803a166e4788a098e

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbox_ssl-0.4.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: netbox_ssl-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 94.0 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b428cf36286751be5efef85843cf3f8a78fe0efe0a49648545036da6717151d4
MD5 e67332c9155d407427a1b691234522cf
BLAKE2b-256 c08e8ec15d0714d80fa6bd0e33d2a3da2b55e07c60824a6329283e817363e867

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbox_ssl-0.4.1-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