Skip to content

Commit 69481a5

Browse files
authored
Update README.md
1 parent 05ee539 commit 69481a5

File tree

1 file changed

+160
-5
lines changed

1 file changed

+160
-5
lines changed

README.md

Lines changed: 160 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,162 @@
1-
# xca-automatic-update-crl-project
1+
## Описание проекта
22

3-
```sequence
4-
Alice->Bob: Hello Bob, how are you?
5-
Note right of Bob: Bob thinks
6-
Bob-->Alice: I am good thanks!
3+
`xca-automatic-update-crl` — это проект, который автоматизирует процесс обновления списка отозванных сертификатов (CRL) для инфраструктуры PKI (Public Key Infrastructure), созданной с помощью XCA (X Certificate and Key management). Проект состоит из двух основных компонентов:
4+
5+
- **Сервер (ЦУЦ)**: Центральный узел управления (ЦУЦ) отвечает за регистрацию клиентов (ПУЦ), предоставление актуального CRL и мониторинг состояния подключенных клиентов.
6+
- **Клиент (ПУЦ)**: Периферийный узел управления (ПУЦ) регистрируется на сервере, периодически запрашивает CRL и отображает статус отозванных сертификатов.
7+
8+
Проект предоставляет веб-интерфейс для мониторинга:
9+
- Список подключенных клиентов (ПУЦ) с их статусом (Connected/Disconnected).
10+
- Список отозванных сертификатов с серийными номерами, причинами отзыва и датами отзыва.
11+
12+
Этот проект полезен для автоматизации управления сертификатами в распределённых системах, где требуется регулярное обновление CRL и мониторинг состояния инфраструктуры PKI.
13+
14+
---
15+
16+
## Предназначение
17+
18+
Проект решает следующие задачи:
19+
1. **Автоматическое обновление CRL**: Клиенты (ПУЦ) автоматически запрашивают и обновляют CRL с сервера (ЦУЦ) каждые 30 секунд.
20+
2. **Мониторинг клиентов**: Сервер отслеживает состояние подключенных ПУЦ (онлайн/оффлайн) и предоставляет информацию о последнем обновлении.
21+
3. **Удобный интерфейс**: Веб-интерфейс с вкладками для просмотра списка клиентов и отозванных сертификатов, выполненный в едином стиле для сервера и клиента.
22+
4. **Безопасность**: Использует подписи для регистрации клиентов и проверки целостности CRL.
23+
24+
Проект может быть использован в корпоративных сетях, где требуется управление сертификатами и их отзывами, например, для VPN, веб-серверов или других систем, использующих PKI.
25+
26+
---
27+
28+
## Требования
29+
30+
Для работы проекта необходимы следующие зависимости:
31+
32+
- **Python 3.8+**
33+
- **Библиотеки Python**:
34+
- `fastapi` — для создания веб-сервера.
35+
- `uvicorn` — для запуска FastAPI.
36+
- `cryptography` — для работы с сертификатами и подписями.
37+
- `aiohttp` — для асинхронных HTTP-запросов.
38+
- `aiofiles` — для асинхронной работы с файлами.
39+
- **XCA** (опционально): Для создания сертификатов, ключей и CRL.
40+
- **Сертификаты и ключи**:
41+
- Сертификат и приватный ключ для ЦУЦ.
42+
- Сертификат и приватный ключ для каждого ПУЦ.
43+
- Файл CRL (например, `CRL.pem`), созданный в XCA.
44+
45+
---
46+
47+
## Установка
48+
49+
### 1. Клонирование репозитория
50+
51+
Склонируй репозиторий на свой компьютер:
52+
53+
```bash
54+
git clone https://github.com/Tminww/xca-automatic-update-crl.git
55+
cd xca-automatic-update-crl
756
```
57+
58+
### 2. Установка зависимостей
59+
60+
Создай виртуальное окружение и установи зависимости:
61+
62+
```bash
63+
python -m venv venv
64+
source venv/bin/activate # Для Windows: venv\Scripts\activate
65+
pip install -r requirements.txt
66+
```
67+
68+
Если файл `requirements.txt` отсутствует, установи зависимости вручную:
69+
70+
```bash
71+
pip install fastapi uvicorn requests cryptography aiohttp aiofiles
72+
```
73+
74+
### 3. Настройка конфигурации
75+
76+
Создай файл `.env` для ЦУЦ и ПУЦ используя `.env.default` за основу. Пример:
77+
78+
```python
79+
ROOT_HOST=127.0.0.1
80+
ROOT_PORT=8000
81+
PUC_HOST=127.0.0.5
82+
PUC_PORT=8001
83+
PUC_USER=user1
84+
PROXY=http://proxy.example.com:3128
85+
ABSOLUTE_PUC_CERT_PATH=/path/to/UNDERCA1.crt
86+
ABSOLUTE_PUC_KEY_PATH=/path/to/UNDERCA1.pem
87+
ABSOLUTE_CRL_PATH=/path/to/CRL.pem
88+
89+
UPDATE_RATE=30
90+
```
91+
92+
Укажи правильные пути к файлам сертификатов, ключей и CRL, а также хосты и порты для сервера и клиента.
93+
94+
### 4. Подготовка сертификатов и CRL
95+
96+
1. Используй XCA для создания:
97+
- Сертификата и ключа для ЦУЦ.
98+
- Сертификата и ключа для ПУЦ.
99+
- Файла CRL (`CRL.pem`).
100+
2. Укажи пути к этим файлам в `.env`.
101+
102+
---
103+
104+
## Запуск
105+
106+
### 1. Запуск сервера (ЦУЦ)
107+
108+
Запусти сервер на указанном хосте и порту:
109+
110+
```bash
111+
python3 -m main
112+
```
113+
114+
- Сервер начнёт работать и будет доступен по адресу `http://127.0.0.1:8000/`.
115+
- Он будет отслеживать подключенных клиентов и предоставлять CRL.
116+
117+
### 2. Запуск клиента (ПУЦ)
118+
119+
Запусти клиент на другом порту:
120+
121+
```bash
122+
python3 -m main
123+
```
124+
125+
- Клиент зарегистрируется на сервере и начнёт периодически запрашивать CRL.
126+
- Веб-интерфейс клиента будет доступен по адресу `http://127.0.0.1:8001/`.
127+
128+
---
129+
130+
## Использование
131+
132+
### Веб-интерфейс ЦУЦ
133+
1. Открой `http://127.0.0.1:8000/` в браузере.
134+
2. Переключайся между вкладками:
135+
- **Список ПУЦ**: Показывает зарегистрированных клиентов, их IP, порт, статус (Connected/Disconnected) и время последнего обновления.
136+
- **Отозванные сертификаты**: Отображает список отозванных сертификатов с серийными номерами, причинами отзыва и датами отзыва.
137+
138+
### Веб-интерфейс ПУЦ
139+
1. Открой `http://127.0.0.1:8001/` в браузере.
140+
2. Просматривай:
141+
- Статус соединения с сервером.
142+
- Время последнего обновления CRL.
143+
- Список отозванных сертификатов.
144+
145+
---
146+
147+
## Возможные проблемы и их решения
148+
149+
1. **Ошибка "File not found"**:
150+
- Убедись, что пути к сертификатам, ключам и CRL в `.env` указаны правильно.
151+
2. **Клиент не регистрируется на сервере**:
152+
- Проверь, что сервер запущен и доступен по указанному хосту и порту.
153+
- Убедись, что подпись клиента валидна (проверь сертификаты и ключи).
154+
3. **CRL не обновляется**:
155+
- Проверь логи (`logs/root_server.log` и `logs/under_server.log`) на наличие ошибок.
156+
- Убедись, что файл `CRL.pem` доступен и валиден.
157+
158+
---
159+
160+
## Лицензия
161+
162+
Проект распространяется под лицензией MIT. Подробности смотри в файле `LICENSE`.

0 commit comments

Comments
 (0)