ervu-sign-module/README.md

106 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Краткое описание
Модуль предназначен для подписи данных.
Приложение принимает POST-запрос по протоколу FastCGI (Content-Type: text/plain).
Подписывает строку, полученную в теле запроса.
В ответе возвращает подпись в формате urlSafeBase64 (Content-Type: text/plain).
Пример выполнения запроса:
```
$ curl -v http://127.0.0.1:8080/sign -H "Content-Type: text/plain" -d "test"
* Trying 127.0.0.1:8080...
* Connected to 127.0.0.1 (127.0.0.1) port 8080
> POST /sign HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/8.4.0
> Accept: */*
> Content-Type: text/plain
> Content-Length: 4
>
< HTTP/1.1 200 OK
< Server: nginx/1.24.0
< Date: Fri, 16 Aug 2024 07:33:13 GMT
< Content-Type: text/plain
< Transfer-Encoding: chunked
< Connection: keep-alive
<
urlSafeBase64_of_signed_string_test
```
## Сборка и установка
### Подготовка
1. Установить КриптоПро.
2. Установить сертификат для пользователя, под которым будет запускаться данное приложение.
3. Установить nginx.
4. В настройках nginx добавить перенаправление на данное приложение:
```
location = /sign {
fastcgi_pass localhost:9009;
include fastcgi_params;
}
```
### Cборка из исходников
Для **сборки** необходимы следующие библиотеки:
- glib2-devel
- libfcgi-devel
- lsb-cprocsp-base
- lsb-cprocsp-rdr-64
- lsb-cprocsp-kc1-64
- lsb-cprocsp-capilite-64
- cprocsp-curl-64
- lsb-cprocsp-ca-certs
- cprocsp-pki-cades-64
- lsb-cprocsp-devel
Для **установки** необходимы следующие библиотеки:
- glib2
- libfcgi
- lsb-cprocsp-base
- lsb-cprocsp-rdr-64
- lsb-cprocsp-kc1-64
- lsb-cprocsp-capilite-64
- cprocsp-curl-64
- lsb-cprocsp-ca-certs
- cprocsp-pki-cades-64
Для сборки и установки приложения из исходников, выполните следующие команды:
```
$ mkdir .build && cd .build
$ cmake ..
$ make -j$(nproc)
```
Чтобы задать произвольное имя конфигурационного файла, при сборке приложения необходимо задать параметр CONFIG_NAME.
Пример:
```
cmake -DCONFIG_NAME=/opt/ervu-esia-module.conf
```
По умолчанию, имя конфигурационного файла /etc/ervu-esia-module.conf.
### Настройка
Приложение настраивается в конфигурационном файле, заданном на этапе сборки (по умолчанию, /etc/ervu-esia-module.conf).
- В секции **\[main\]** задать количество воркеров
worker_processes = 10 *\# значение по умолчанию: 10*
- В секции **\[fcgi\]** задать настройки fcgi-сервера:
fcgi_listen_port = 9009 *\# значение по умолчанию: 9009, должно совпадать со значением в nginx.conf*
fcgi_listen_host = 127.0.0.1 *\# значение по умолчанию: 127.0.0.1, должно совпадать со значением в nginx.conf*
fcgi_thread_pool_size = 1 *\# значение по умолчанию: 1*
- В секции **\[sign\]** задать настройки модуля подписания:
location = /sign *\# значение по умолчанию: /sign, должно совпадать со значением в nginx.conf*
cp_file = libcapi20.so *\# путь до файла библиотеки криптопровайдера*
signer_subject = signer@example.ru *\# email, ИНН, СНИЛС или любая другая строка из свойства контейнера «Субъект»*
pin = \*\*\*\* *\# пароль от контейнера*