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