## Краткое описание Модуль предназначен для подписи данных. Приложение принимает 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 = \*\*\*\* *\# пароль от контейнера*