
Высокопроизводительный инструмент мониторинга Certificate Transparency (CT), написанный на Rust. Поток новых выпущенных SSL/TLS-сертификатов из CT-логов в реальном времени. Реализация certstream-server на Rust с улучшенной производительностью и эффективностью использования памяти.
Сервер Certstream, написанный на Rust. Он отслеживает журналы Certificate Transparency (CT) и передаёт в потоковом режиме новые выпущенные SSL/TLS-сертификаты через WebSocket и Server-Sent Events (SSE).
Certstream агрегирует сертификаты из журналов Certificate Transparency и передаёт их в потоковом режиме в реальном времени. Эта реализация совместима с существующими клиентами Certstream и поддерживает как журналы RFC 6962, так и static-CT.
Ключевые возможности:
Полная документация по API, примеры клиентов, справочник по конфигурации и заметки о самостоятельном размещении доступны на certstream.dev.
Хотите получать поток без запуска сервера? Есть бесплатный размещённый CertStream API по адресу wss://api.certstream.dev/.
Готовые бинарные файлы для Linux представляют собой статические сборки musl. Архивы релизов включают контрольные суммы SHA-256.
# Linux and macOS, x86_64 and arm64; verifies the checksum before installing
curl -fsSL https://raw.githubusercontent.com/reloading01/certstream-server-rust/main/install.sh | sh
# Homebrew
brew install reloading01/tap/certstream-server-rust
# Cargo
cargo install certstream-server-rust
# Docker
docker run -d -p 8080:8080 ghcr.io/reloading01/certstream-server-rust:latest
Подписанные apt- и rpm-репозитории, Docker Compose и параметры установщика описаны в документации по самостоятельному размещению.
Конфигурация не требуется. Сервер автоматически обнаруживает CT-логи, обслуживает WebSocket на порту 8080 и сохраняет свою позицию, поэтому после перезапуска он продолжает работу, а не воспроизводит историю логов заново.
Все настройки необязательны. Переменные окружения переопределяют значения YAML, а значения YAML переопределяют встроенные значения по умолчанию. Все переменные и ключи YAML перечислены в справочнике по конфигурации.
| Переменная | По умолчанию | Описание |
|---|---|---|
CERTSTREAM_PORT | 8080 | Порт HTTP/WebSocket |
CERTSTREAM_SSE_ENABLED | false | Включить SSE |
CERTSTREAM_API_ENABLED | false | Включить REST API |
CERTSTREAM_AUTH_ENABLED | false | Требовать bearer-токены (CERTSTREAM_AUTH_TOKENS) |
CERTSTREAM_CONNECTION_LIMIT_ENABLED | false | Включить глобальные лимиты подключений и лимиты на IP |
CERTSTREAM_CT_LOG_STATE_FILE | certstream_state.json | Файл позиции CT-лога |
| Эндпоинт | Поток |
|---|---|
ws://host:8080/ | Lite |
ws://host:8080/full-stream | Полные данные с DER и цепочкой |
ws://host:8080/domains-only | Только доменные имена |
http://host:8080/sse | SSE, если включён (?stream=full или ?stream=domains) |
/health, /health/deep, /metrics | Проверки работоспособности и метрики Prometheus |
/api/stats, /api/logs, /api/cert/{hash} | REST API, если включён |
Эндпоинты потоковой передачи принимают параметры запроса domain и issuer для фильтрации на стороне сервера. Форматы сообщений, вывод версии 2 и экспорт диапазонов см. в документации.
Историю версий см. в RELEASE_NOTES.md.
Сообщения об ошибках, особенности CT-логов и pull-запросы приветствуются. О том, как собирать, тестировать и отправлять изменения, см. в CONTRIBUTING.md.
Звезда репозиторию или его распространение помогают проекту стать заметнее. Вы также можете поддержать его на GitHub.
MIT. См. LICENSE.