← Back to all products
$19
SSL Certificate Manager
SSL/TLS certificate automation with Let's Encrypt, auto-renewal, and certificate chain validation.
JSONMarkdownPythonCI/CD
📄 Product Preview
Try the interactive reader and demo tools below, or get the full product with all content unlocked.
📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample📁 File Structure 10 files
ssl-cert-manager/
├── LICENSE
├── README.md
├── examples/
│ └── ssl_config.json
├── free-sample.zip
├── guide/
│ ├── 01_features.md
│ ├── 02_quick-start.md
│ ├── 03_cli-reference.md
│ └── 04_license.md
├── index.html
└── src/
└── ssl_manager.py
📖 Documentation Preview README excerpt
SSL Certificate Manager
Part of the Deploy Kit by CodeVault
Manage SSL/TLS certificates across your infrastructure. Check expiry dates, validate certificate chains, generate CSR configurations, and get renewal reminders — all from a single config file.
Features
- Expiry checking: Scan multiple domains and report days until certificate expiry
- Chain validation: Verify complete certificate chain from leaf to root CA
- CSR generation config: Generate OpenSSL CSR configuration files from a JSON spec
- Renewal reminders: Flag certificates expiring within configurable threshold (default: 30 days)
- Bulk scanning: Check all your domains from a single config file
- JSON and text output formats for CI/CD integration
- Exit code 1 when any certificate is expired or near-expiry
- Python stdlib only — zero dependencies
Quick Start
# Check SSL certificates for all configured domains
python src/ssl_manager.py check --config examples/ssl_config.json
# JSON output for CI/CD pipelines
python src/ssl_manager.py check --config examples/ssl_config.json --format json
# Generate a CSR config file
python src/ssl_manager.py csr --config examples/ssl_config.json --domain api.example.com
# Set custom expiry warning threshold (days)
python src/ssl_manager.py check --config examples/ssl_config.json --warn-days 60
# Check a single domain (no config file needed)
python src/ssl_manager.py check-one --domain api.example.com --port 443
CLI Reference
| Command | Description |
|---|---|
check | Check all domains in config for certificate expiry |
check-one | Check a single domain's certificate |
csr | Generate CSR configuration for a domain |
| Flag | Description |
|---|---|
--config, -c | Path to the JSON config file |
--domain | Domain to check or generate CSR for |
--port | Port for SSL connection (default: 443) |
--format, -f | Output format: text or json |
--output, -o | Write output to file |
--warn-days | Days before expiry to trigger warning (default: 30) |
--verbose, -v | Enable verbose logging |
License
MIT — See LICENSE file.
📄 Code Sample .py preview
src/ssl_manager.py
#!/usr/bin/env python3
"""
SSL Certificate Manager — Deploy Kit by DataNest
Check SSL certificate expiry, validate certificate chains, and generate
CSR configuration files for your domains — all from the command line.
Why this exists:
Expired SSL certificates cause outages that are embarrassing and entirely
preventable. This tool scans your domains, tells you exactly when each
certificate expires, and integrates with CI/CD so you get non-zero exit
codes when any cert is nearing expiry. It also generates OpenSSL CSR
configs so you can request new certificates consistently.
Usage:
python ssl_manager.py check --config ssl_config.json
python ssl_manager.py check --config ssl_config.json --format json
python ssl_manager.py check-one --domain api.example.com
python ssl_manager.py csr --config ssl_config.json --domain api.example.com
License: MIT
"""
from __future__ import annotations
import argparse
import json
import logging
import socket
import ssl
import sys
import time
from dataclasses import dataclass, field
from datetime import datetime, timezone
from pathlib import Path
from typing import Any
# ---------------------------------------------------------------------------
# Constants
# ---------------------------------------------------------------------------
LOG = logging.getLogger("ssl-manager")
DEFAULT_PORT = 443
DEFAULT_TIMEOUT = 10
DEFAULT_WARN_DAYS = 30
DEFAULT_CRITICAL_DAYS = 7
# ---------------------------------------------------------------------------
# Data Models
# ... 516 more lines ...