No description
Find a file
Халтобин Евгений 4d21d71606 fix
2025-01-20 16:45:41 +03:00
conf fix 2025-01-20 16:45:41 +03:00
docs Инструкция по обновлению с версии 1.1.0 до 1.2.0 2024-11-29 16:37:23 +03:00
src Изменен флаг проверки в CertVerifyCertificateChainPolicy() 2024-12-28 14:17:09 +03:00
tests SUPPORT-8592. Проверка подписи маркера доступа 2024-11-14 12:16:55 +03:00
.gitignore Build in docker 2024-09-11 17:30:53 +03:00
CMakeLists.txt Изменен флаг проверки в CertVerifyCertificateChainPolicy() 2024-12-28 14:17:09 +03:00
docker-compose.yaml Build in docker 2024-09-11 17:30:53 +03:00
Dockerfile.micord DEVOPS-1859 fix Dockerfile 2025-01-20 13:08:33 +03:00
entrypoint.sh fix 2025-01-20 12:20:01 +03:00
ervu-sign-module.service ervu-sign-module.service added 2024-09-12 08:52:48 +03:00
README.md SUPPORT-8714. Добавлена возможность указывать несколько сертификатов ЕСИА 2024-11-25 13:32:52 +03:00
Инструкция по обновлению с версии 1.0.0 до 1.1.0.txt "Инструкция по обновлению с версии 1.0.0 до 1.1.0.txt": добавлен пункт установки новых зависимостей 2024-11-14 16:00:55 +03:00
Инструкция по обновлению с версии 1.1.0 до 1.2.0.txt Инструкция по обновлению с версии 1.1.0 до 1.2.0 2024-11-29 16:37:23 +03:00
Инструкция по сборке.md SUPPORT-8592. Проверка подписи маркера доступа 2024-11-14 12:16:55 +03:00
Инструкция по установке.md SUPPORT-8761. Подробное логирование ошибки об истекшей лицензии (+ о неправильном пароле) 2024-12-02 12:02:24 +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

Проверка подписи маркера доступа

Приложение принимает POST-запрос по протоколу FastCGI (Content-Type: text/plain).
Проверяет подпись маркера доступа, полученного в теле запроса.
В ответе возвращает один из следующих статус-кодов:

  • 200 OK - подпись валидна
  • 401 Unauthorized - подпись невалидна (в теле ответа возвращается код ошибки от криптопровайдера)
  • 500 Internal Server Error - внутренняя ошибка сервера

Пример выполнения запроса:

$ curl -v http://127.0.0.1:8080/verify -H "Content-Type: text/plain" -d "some_valid_access_token"
*   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: Wed, 16 Oct 2024 09:55:46 GMT
< Transfer-Encoding: chunked
< Connection: keep-alive
< 

Сборка из исходников

Инструкции по сборке из исходников см. "Инструкция по сборке.md"

Примечание. Чтобы задать произвольное имя конфигурационного файла, при сборке приложения необходимо задать параметр CONFIG_NAME.
Пример:

cmake -DCONFIG_NAME=/opt/ervu-sign-module.conf ..

Установка

Инструкции по установке см. "Инструкция по установке.md"

Настройка

Приложение настраивается в конфигурационном файле, заданном на этапе сборки (по умолчанию, /etc/ervu-sign-module.conf).

  • В секции [main] задать общие настройки:
    worker_processes = 10 # количество воркеров (значение по умолчанию: 10)
    cp_file = libcapi20.so # путь до файла библиотеки криптопровайдера

  • В секции [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
    sign_cert_thumbprint = sha1_thumbprint_of_signer_cert # SHA1 отпечаток сертификата, которым ИС подписывает секрет
    sign_cert_password = **** # пароль от контейнера

  • В секции [verify] задать настройки проверки подписи маркера доступа:
    location = /verify # значение по умолчанию: /verify
    esia_cert_thumbprint = sha1_thumbprint_of_esia_cert0,sha1_thumbprint_of_esia_cert1 # список SHA1 отпечатков сертификатов ЕСИА, указанных через запятую (без пробелов)