os.mtls

mTLS-сертификаты для Traefik без CRL, OCSP и лишней боли

Bash-скрипт, который выпускает, продлевает и мгновенно отзывает клиентские сертификаты — без перезагрузки Traefik.

MIT LicenseBash + OpenSSL + Python3v2.0

Почему это вообще нужно

Traefik не умеет отзывать сертификаты
Добавил клиента в caFiles — и всё, штатного способа заблокировать его без пересборки всего CA нет.
CRL/OCSP — оверинжиниринг
Поднимать инфраструктуру списков отзыва ради 5–20 клиентских сертификатов — избыточно.
Ручное управление не масштабируется
openssl командами на память, файлы разбросаны по серверу, нет истории — кто, когда и зачем выпустил сертификат.

Как работает

Один промежуточный CA на клиента + bundle-файл

Каждому клиенту создаётся свой промежуточный CA, подписанный корневым. Traefik доверяет не клиентским сертификатам напрямую, а bundle-файлу с промежуточными CA активных клиентов.

Отзыв — это удаление промежуточного CA из bundle. File provider Traefik подхватывает изменение сам, поэтому доступ блокируется мгновенно и без перезагрузки.

Root CA → Int-CA (alice) → client.crt (alice)
Root CA → Int-CA (bob) → client.crt (bob)
Гранулярный отзыв
Без reload Traefik
Только openssl и python3

Кому подойдёт

Self-hosted / homelab
Dokploy, Traefik, VPS с несколькими сервисами за mTLS.
Небольшие DevOps-команды
Контроль доступа к внутренним панелям/API без полноценного VPN.
Open-source инфраструктура
Простой bash-инструмент без Go-бинарников и внешних зависимостей.
Traefik + Docker Compose
Совместим из коробки, есть пресеты Dokploy, Traefik и локальный.

Что внутри

CLI + TUI
Команды и интерактивный режим для ежедневных операций.
Контроль доступа
Выпуск, отзыв и изоляция клиентов по сервисам.
Журнал аудита
История действий: кто, когда и зачем выпускал сертификат.
Шифрование ключа CA
Защита приватного ключа корневого центра.
Bundle per-service
Отдельные bundle-файлы для разных сервисов Traefik.
Webhook-уведомления
События можно отправлять во внешние системы.
Backup / Restore
Резервное копирование и восстановление состояния.
Продление сертификатов
Обновление клиентских сертификатов без ручного OpenSSL.
Проверка цепочки
Валидация Root CA → Int-CA → client.crt.
Валидация YAML
Проверка конфигурации перед применением.
Блокировка БД
flock защищает состояние от конкурентных запусков.
Удаление сервиса
Полная очистка service bundle и связанных записей.

Требования

opensslвыпуск и проверка сертификатов
python3служебная обработка данных
bash ≥4исполнение CLI-скрипта
flockбезопасная блокировка БД
curl*опциональные webhook-уведомления
ip*опциональная диагностика окружения

Проверено на Ubuntu, платформа Dokploy.

FAQ