Initial commit
This commit is contained in:
157
docs/API.md
Normal file
157
docs/API.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# API Документация для CertCenter (POST-запросы, поддержка JSON)
|
||||
|
||||
Базовый адрес: `http://127.0.0.1:4567`
|
||||
|
||||
---
|
||||
|
||||
## 1. Получение токена
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"login":"admin","password":"admin"}'
|
||||
```
|
||||
|
||||
> **Ответ**
|
||||
> ```
|
||||
> { "error": null, "content": { "token": "<JWT>" } }
|
||||
> ```
|
||||
> Сохраняйте значение `token` для последующих запросов.
|
||||
|
||||
---
|
||||
|
||||
## 2. Список серверных сертификатов
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/servers \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Список клиентских сертификатов
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/clients \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Детальная информация о сертификате
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/certinfo/123 \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Детальная информация о корневом сертификате центра сертификации
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/root \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Отзыв сертификата
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/revoke/123 \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Добавление клиентского сертификата
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/addclient \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>","server_domain":"example.com","client":"client1"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 8. Добавление серверного сертификата
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/addserver \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>","domains":"example.com,example.org","validity_days":365}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Список пользователей (admin)
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/ulist \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 10. Удаление пользователя
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/deleteuser/42 \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 11. Создание пользователя
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/adduser \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>","login":"jane","password":"secret","email":"jane@example.com","role":1}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 12. Редактирование пользователя
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/edituser/42 \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"token":"<JWT>","login":"jane","password":"newpass","role":2}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 13. Установка и подготовка структуры центра сертификации
|
||||
|
||||
```
|
||||
curl -X POST http://127.0.0.1:4567/api/v1/install \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"cert-path":"/tmp","org-name":"neworg","common-name":"name","cert-password":"pass","country-name": "RU", "validity-days":"3650"}'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 14. Обработка ошибок
|
||||
|
||||
Если сервер возвращает статус **400**, то это ошибка синтаксиса JSON:
|
||||
|
||||
```
|
||||
{ "error": "Invalid JSON", "content": null }
|
||||
```
|
||||
|
||||
Если токен недействителен или истёк, будет:
|
||||
|
||||
```
|
||||
{ "error": "Токен устарел", "content": null }
|
||||
```
|
||||
|
||||
При других ошибках сервер выдаёт `{ "error": "...", "content": "..." }` в формате JSON.
|
||||
139
docs/UTILS_EXAMPLES.md
Normal file
139
docs/UTILS_EXAMPLES.md
Normal file
@@ -0,0 +1,139 @@
|
||||
Сводка утилит для создания сертификатов и управление ими в инфраструктуре центра сертификации
|
||||
|
||||
В данной статье представлены краткое описание и примеры использования нескольких полезных утилит, которые помогают автоматизировать процесс создания сертификатов и управления ими в инфраструктуре центра сертификации.
|
||||
|
||||
## Утилита `prepare.sh`
|
||||
### Описание:
|
||||
Скрипт автоматизирует процесс создания инфраструктуры центра сертификации (ЦС), включая создание директорий, генерацию ключей и сертификатов, а также настройку конфигурационных файлов для корневого и промежуточного ЦА.
|
||||
|
||||
### Примеры использования:
|
||||
1. Запуск скрипта с правами суперпользователя:
|
||||
```sh
|
||||
sudo bash prepare.sh
|
||||
```
|
||||
|
||||
## Утилита `make_server_cert.sh`
|
||||
### Описание:
|
||||
Генерирует серверные сертификаты для указанных доменов или IP-адресов. Скрипт создает приватный ключ, запрос на подпись сертификата (CSR) и сам сертификат.
|
||||
|
||||
### Примеры использования:
|
||||
1. Генерация серверного сертификата для домена `example1.com` и IP-адреса `192.168.3.145`:
|
||||
```sh
|
||||
bash make_server_cert.sh example1.com 192.168.3.145
|
||||
```
|
||||
|
||||
## Утилита `make_client_cert.sh`
|
||||
### Описание:
|
||||
Скрипт для создания клиентских сертификатов для указанного сервера и клиента. Генерирует приватный ключ, запрос на сертификат (CSR), подписывает его и выводит информацию о сгенерированном сертификате.
|
||||
|
||||
### Примеры использования:
|
||||
1. Генерация клиентского сертификата для домена `example1.com` и имени пользователя `user1@test.com`, действующего 365 дней:
|
||||
```sh
|
||||
bash make_client_cert.sh -s example1.com -c user1@test.com -d 365
|
||||
```
|
||||
|
||||
## Утилита `make_server_revoke.sh`
|
||||
### Описание:
|
||||
Позволяет отозвать серверный сертификат для указанного домена или IP-адреса.
|
||||
|
||||
### Примеры использования:
|
||||
1. Отозвать серверный сертификат для домена `brepo.ru`:
|
||||
```sh
|
||||
bash make_server_revoke.sh -n 1 brepo.ru
|
||||
```
|
||||
|
||||
## Утилита `make_client_revoke.sh`
|
||||
### Описание:
|
||||
Позволяет отозвать клиентский сертификат для указанного сервера и клиента.
|
||||
|
||||
### Примеры использования:
|
||||
1. Отозвать клиентский сертификат для домена `example1.com` и имени пользователя `user2@test.com`:
|
||||
```sh
|
||||
bash make_client_revoke.sh -n 1 -s example1.com -c user2@test.com
|
||||
```
|
||||
|
||||
## Утилита `make_app_keys.sh`
|
||||
### Описание:
|
||||
Скрипт генерирует беспарольный приватный и публичный ключ с помощью `openssl` и сохраняет их в указанной директории. Это удобно для создания ключей, которые будут использоваться приложениями без необходимости вводить пароль при каждом использовании.
|
||||
|
||||
### Примеры использования:
|
||||
1. Генерация ключей в директории `/etc/ssl/app_keys`:
|
||||
```sh
|
||||
bash make_app_keys.sh /etc/ssl/app_keys
|
||||
```
|
||||
После выполнения ключи будут доступны как:
|
||||
- `/etc/ssl/app_keys/caapp.private.key.pem`
|
||||
- `/etc/ssl/app_keys/caapp.public.key.pem`
|
||||
|
||||
## Еще примеры
|
||||
1. Подготовка инфраструктуры ЦС и генерация серверного и клиентского сертификатов:
|
||||
```sh
|
||||
bash prepare.sh
|
||||
bash make_server_cert.sh example1.com 192.168.5.145
|
||||
bash make_client_cert.sh -s example1.com -c user1@test.com -d 365
|
||||
```
|
||||
|
||||
2. Отозвать серверный и клиентский сертификаты (все версии):
|
||||
```sh
|
||||
bash make_server_revoke.sh brepo.ru
|
||||
bash make_client_revoke.sh -s example1.com -c user2@test.com
|
||||
```
|
||||
|
||||
Эти утилиты и примеры помогут вам автоматизировать процесс создания сертификатов и управления ими в инфраструктуре центра сертификации.
|
||||
|
||||
## Примеры настройки nginx
|
||||
|
||||
Как обеспечить доступ к сайту с помощью сертификатов:
|
||||
|
||||
|
||||
Примкр настройки домена, например с репозиторием пакетов `/etc/nginx/conf.d/example1.com.conf`:
|
||||
|
||||
```
|
||||
server {
|
||||
listen 8081 ssl;
|
||||
server_name example1.com www.example1.com;
|
||||
|
||||
root /var/www/example1.com/html;
|
||||
index index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
|
||||
access_log /var/log/nginx/example1.com.access.log;
|
||||
error_log /var/log/nginx/example1.com.error.log debug;
|
||||
|
||||
ssl_certificate /database/ca/intermediate/certs/example1.com.cert.pem;
|
||||
ssl_certificate_key /database/ca/intermediate/private/example1.com.key.pem;
|
||||
ssl_client_certificate /database/ca/intermediate/certs/ca-chain.cert.pem;
|
||||
ssl_crl /database/ca/intermediate/crl/ca-full.crl.pem;
|
||||
ssl_verify_client on;
|
||||
|
||||
keepalive_timeout 70;
|
||||
fastcgi_param SSL_VERIFIED $ssl_client_verify;
|
||||
fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
|
||||
fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
|
||||
fastcgi_param SSL_DN $ssl_client_s_dn;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Вызов на строне клиента:
|
||||
|
||||
```
|
||||
curl -k --cert /database/ca/client_certs/example1.com/user2@test.com.cert.pem --key /database/ca/client_certs/example1.com/private/user2@test.com_private.key.pem https://example1.com:8081
|
||||
```
|
||||
|
||||
|
||||
Или настройка DNF репозитория для доступа к закрытому репозиторию:
|
||||
|
||||
```[test]
|
||||
name = test
|
||||
enabled = 1
|
||||
sslverify = 0
|
||||
gpgcheck = 1
|
||||
baseurl = https://example1.com:8081
|
||||
sslclientkey=/database/ca/client_certs/example1.com/private/user2@test.com_private.key.pem
|
||||
sslclientcert=/database/ca/client_certs/example1.com/user2@test.com.cert.pem
|
||||
sslcacert=/database/ca/intermediate/certs/ca-chain.cert.pem
|
||||
```
|
||||
Reference in New Issue
Block a user