Современный сервис для управления mTLS сертификатами с gRPC API, автоматическим обновлением и интеграцией с Redis.
- gRPC API для управления сертификатами
- Redis интеграция для отслеживания сертификатов
- Автоматическое обновление сертификатов
- Генерация mTLS сертификатов
- Поддержка отзыва сертификатов
- Мониторинг в реальном времени
- Debian пакеты с debconf конфигурацией
- Docker поддержка
-
Скачайте пакет для вашей архитектуры:
# Для AMD64 wget https://github.com/your-org/cert-agent/releases/latest/download/cert-agent_*_amd64.deb # Для ARM64 wget https://github.com/your-org/cert-agent/releases/latest/download/cert-agent_*_arm64.deb
-
Установите пакет:
sudo dpkg -i cert-agent_*_amd64.deb sudo apt-get install -f # Установите зависимости если нужно
-
Настройте Redis подключение:
sudo dpkg-reconfigure cert-agent
# Клонируйте репозиторий
git clone https://github.com/your-org/cert-agent.git
cd cert-agent
# Запустите с Docker Compose
docker-compose up -d
# Или соберите образ самостоятельно
docker build -t cert-agent .
docker run -d --name cert-agent -p 50051:50051 cert-agent# Установите Rust (https://rustup.rs/)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Клонируйте репозиторий
git clone https://github.com/your-org/cert-agent.git
cd cert-agent
# Соберите проект
cargo build --release
# Запустите сервис
./target/release/cert-agent --config config/default.tomlФайл конфигурации: /etc/cert-agent/config.toml
[grpc]
bind_address = "0.0.0.0:50051"
max_message_size = 4194304
[redis]
url = "redis://localhost:6379"
max_connections = 10
connection_timeout_secs = 5
command_timeout_secs = 3
[watcher]
check_interval_seconds = 300
renewal_threshold_days = 30
max_concurrent_renewals = 5
[certificate]
ca_cert_path = "/etc/cert-agent/ca.crt"
ca_key_path = "/etc/cert-agent/ca.key"
storage_path = "/var/lib/cert-agent/certs"
default_validity_days = 365
renewal_threshold_days = 30
key_size = 2048
signature_algorithm = "sha256"export CERT_AGENT_REDIS_URL="redis://localhost:6380"
export CERT_AGENT_GRPC_BIND_ADDRESS="0.0.0.0:50051"
export CERT_AGENT_CERTIFICATE_DEFAULT_VALIDITY_DAYS="365"grpcurl -plaintext -d '{
"subject": "CN=example.com",
"dns_names": ["example.com", "*.example.com"],
"validity_days": 365
}' localhost:50051 cert_agent.CertAgent/IssueCertificategrpcurl -plaintext -d '{
"certificate_id": "certificate-uuid"
}' localhost:50051 cert_agent.CertAgent/GetCertificateStatusgrpcurl -plaintext localhost:50051 cert_agent.CertAgent/ListCertificatesgrpcurl -plaintext -d '{
"certificate_id": "certificate-uuid"
}' localhost:50051 cert_agent.CertAgent/RevokeCertificateДля тестирования и интеграции используйте любой gRPC клиент:
# Используя grpcurl
grpcurl -plaintext -d '{"subject": "CN=example.com"}' \
localhost:50051 cert_agent.CertAgent/IssueCertificate
# Используя собственный клиент на любом языке
# Примеры клиентов доступны в отдельном репозиторииversion: '3.8'
services:
cert-agent:
build: .
ports:
- "50051:50051"
environment:
- CERT_AGENT_REDIS_URL=redis://redis:6379
depends_on:
- redis
volumes:
- cert-data:/var/lib/cert-agent/certs
redis:
image: redis:7-alpine
ports:
- "6380:6379"
volumes:
- redis-data:/data
volumes:
cert-data:
redis-data:# Сборка образа
docker build -t cert-agent .
# Или использование готового образа
docker pull ghcr.io/YOUR_USERNAME/cert-agent:latest
# Запуск с Redis
docker run -d --name cert-agent \
--link redis:redis \
-p 50051:50051 \
-e CERT_AGENT_REDIS_URL=redis://redis:6379 \
ghcr.io/YOUR_USERNAME/cert-agent:latest- Rust 1.85+
- OpenSSL
- protobuf-compiler
- Redis (для тестирования)
# Установка зависимостей
sudo apt-get install libssl-dev pkg-config protobuf-compiler
# Сборка проекта
cargo build
# Запуск тестов
cargo test
# Проверка форматирования
cargo fmt --check
# Линтинг
cargo clippy# Локальная сборка пакетов
./scripts/build-packages.sh 1.0.0
# Пакеты будут созданы в директории packages/# Запуск Redis для тестов
docker run -d --name test-redis -p 6379:6379 redis:7-alpine
# Запуск тестов
cargo test
# Интеграционные тесты
./scripts/test-integration.sh# Systemd сервис
journalctl -u cert-agent -f
# Docker
docker logs cert-agent -fСервис предоставляет метрики через gRPC и логи:
- Количество выпущенных сертификатов
- Количество обновленных сертификатов
- Количество отозванных сертификатов
- Статус подключения к Redis
- Время отклика gRPC запросов
# Проверка статуса сервиса
systemctl status cert-agent
# Проверка gRPC API
grpcurl -plaintext localhost:50051 grpc.health.v1.Health/Check- Сертификаты хранятся в зашифрованном виде
- Приватные ключи защищены файловой системой
- gRPC соединения поддерживают TLS
- Redis соединения могут быть защищены паролем
- Системный пользователь для запуска сервиса
- Форкните репозиторий
- Создайте ветку для новой функции (
git checkout -b feature/amazing-feature) - Зафиксируйте изменения (
git commit -m 'Add amazing feature') - Отправьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.
- Web UI для управления сертификатами
- Поддержка ACME протокола
- Интеграция с HashiCorp Vault
- Метрики Prometheus
- Kubernetes оператор
- Поддержка Let's Encrypt
- Автоматическое обновление через webhook