No description
Find a file
2024-08-27 17:07:15 +03:00
conf Docker 2024-08-27 12:13:37 +03:00
src Renamed project 2024-08-21 13:23:37 +03:00
.gitignore Docker 2024-08-27 12:13:37 +03:00
CMakeLists.txt Docker 2024-08-27 12:13:37 +03:00
docker-compose.yaml Docker 2024-08-27 12:13:37 +03:00
Dockerfile DEVOPS-1789 2024-08-27 17:07:15 +03:00
entrypoint.sh Docker 2024-08-27 12:13:37 +03:00
README.md README.md: переименован конфиг файл по умолчанию 2024-08-21 14:06:22 +03:00

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

Модуль предназначен для подписи данных.

Приложение принимает 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-sign-module.conf

Настройка

Приложение настраивается в конфигурационном файле, заданном на этапе сборки (по умолчанию, /etc/ervu-sign-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 = **** # пароль от контейнера