Skip to content

xca-automatic-update-crl — это проект, который автоматизирует процесс обновления списка отозванных сертификатов (CRL) для инфраструктуры PKI (Public Key Infrastructure), созданной с помощью XCA (X Certificate and Key management)

License

Notifications You must be signed in to change notification settings

Tminww/xca-automatic-update-crl

Repository files navigation

Описание проекта

xca-automatic-update-crl — это проект, который автоматизирует процесс обновления списка отозванных сертификатов (CRL) для инфраструктуры PKI (Public Key Infrastructure), созданной с помощью XCA (X Certificate and Key management). Проект состоит из двух основных компонентов:

  • Сервер (ЦУЦ): Центральный узел управления (ЦУЦ) отвечает за регистрацию клиентов (ПУЦ), предоставление актуального CRL и мониторинг состояния подключенных клиентов.
  • Клиент (ПУЦ): Периферийный узел управления (ПУЦ) регистрируется на сервере, периодически запрашивает CRL и отображает статус отозванных сертификатов.

Проект предоставляет веб-интерфейс для мониторинга:

  • Список подключенных клиентов (ПУЦ) с их статусом (Connected/Disconnected).
  • Список отозванных сертификатов с серийными номерами, причинами отзыва и датами отзыва.

Этот проект полезен для автоматизации управления сертификатами в распределённых системах, где требуется регулярное обновление CRL и мониторинг состояния инфраструктуры PKI.


Предназначение

Проект решает следующие задачи:

  1. Автоматическое обновление CRL: Клиенты (ПУЦ) автоматически запрашивают и обновляют CRL с сервера (ЦУЦ) каждые 30 секунд.
  2. Мониторинг клиентов: Сервер отслеживает состояние подключенных ПУЦ (онлайн/оффлайн) и предоставляет информацию о последнем обновлении.
  3. Удобный интерфейс: Веб-интерфейс с вкладками для просмотра списка клиентов и отозванных сертификатов, выполненный в едином стиле для сервера и клиента.
  4. Безопасность: Использует подписи для регистрации клиентов и проверки целостности CRL.

Проект может быть использован в корпоративных сетях, где требуется управление сертификатами и их отзывами, например, для VPN, веб-серверов или других систем, использующих PKI.


Требования

Для работы проекта необходимы следующие зависимости:

  • Python 3.8+
  • Библиотеки Python:
    • fastapi — для создания веб-сервера.
    • uvicorn — для запуска FastAPI.
    • cryptography — для работы с сертификатами и подписями.
    • aiohttp — для асинхронных HTTP-запросов.
    • aiofiles — для асинхронной работы с файлами.
  • XCA (опционально): Для создания сертификатов, ключей и CRL.
  • Сертификаты и ключи:
    • Сертификат и приватный ключ для ЦУЦ.
    • Сертификат и приватный ключ для каждого ПУЦ.
    • Файл CRL (например, CRL.pem), созданный в XCA.

Установка

1. Клонирование репозитория

Склонируй репозиторий на свой компьютер:

git clone https://github.com/Tminww/xca-automatic-update-crl.git
cd xca-automatic-update-crl

2. Установка зависимостей

Создай виртуальное окружение и установи зависимости:

python -m venv venv
source venv/bin/activate  # Для Windows: venv\Scripts\activate
pip install -r requirements.txt

Если файл requirements.txt отсутствует, установи зависимости вручную:

pip install fastapi uvicorn requests cryptography aiohttp aiofiles

3. Настройка конфигурации

Создай файл .env для ЦУЦ и ПУЦ используя .env.default за основу. Пример:

ROOT_HOST=127.0.0.1
ROOT_PORT=8000
PUC_HOST=127.0.0.5
PUC_PORT=8001
PUC_USER=user1
PROXY=http://proxy.example.com:3128
ABSOLUTE_PUC_CERT_PATH=/path/to/UNDERCA1.crt
ABSOLUTE_PUC_KEY_PATH=/path/to/UNDERCA1.pem
ABSOLUTE_CRL_PATH=/path/to/CRL.pem

UPDATE_RATE=30

Укажи правильные пути к файлам сертификатов, ключей и CRL, а также хосты и порты для сервера и клиента.

4. Подготовка сертификатов и CRL

  1. Используй XCA для создания:
    • Сертификата и ключа для ЦУЦ.
    • Сертификата и ключа для ПУЦ.
    • Файла CRL (CRL.pem).
  2. Укажи пути к этим файлам в .env.

Запуск

1. Запуск сервера (ЦУЦ)

Запусти сервер на указанном хосте и порту:

python3 -m main
  • Сервер начнёт работать и будет доступен по адресу http://127.0.0.1:8000/.
  • Он будет отслеживать подключенных клиентов и предоставлять CRL.

2. Запуск клиента (ПУЦ)

Запусти клиент на другом порту:

python3 -m main
  • Клиент зарегистрируется на сервере и начнёт периодически запрашивать CRL.
  • Веб-интерфейс клиента будет доступен по адресу http://127.0.0.1:8001/.

Использование

Веб-интерфейс ЦУЦ

  1. Открой http://127.0.0.1:8000/ в браузере.
  2. Переключайся между вкладками:
    • Список ПУЦ: Показывает зарегистрированных клиентов, их IP, порт, статус (Connected/Disconnected) и время последнего обновления.
    • Отозванные сертификаты: Отображает список отозванных сертификатов с серийными номерами, причинами отзыва и датами отзыва.

Веб-интерфейс ПУЦ

  1. Открой http://127.0.0.1:8001/ в браузере.
  2. Просматривай:
    • Статус соединения с сервером.
    • Время последнего обновления CRL.
    • Список отозванных сертификатов.

Возможные проблемы и их решения

  1. Ошибка "File not found":
    • Убедись, что пути к сертификатам, ключам и CRL в .env указаны правильно.
  2. Клиент не регистрируется на сервере:
    • Проверь, что сервер запущен и доступен по указанному хосту и порту.
    • Убедись, что подпись клиента валидна (проверь сертификаты и ключи).
  3. CRL не обновляется:
    • Проверь логи (logs/root_server.log и logs/under_server.log) на наличие ошибок.
    • Убедись, что файл CRL.pem доступен и валиден.

Лицензия

Проект распространяется под лицензией MIT. Подробности смотри в файле LICENSE.

About

xca-automatic-update-crl — это проект, который автоматизирует процесс обновления списка отозванных сертификатов (CRL) для инфраструктуры PKI (Public Key Infrastructure), созданной с помощью XCA (X Certificate and Key management)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published