ervu-sign-module/Инструкция по установке.md

13 KiB
Raw Blame History

Установка модуля подписания

Создание пользователя ervu

  1. Создать пользователя ervu. Для этого выполнить команды от имени root:

    adduser --system --no-create-home --user-group ervu
    

Установка и настройка КриптоПро

  1. Скачать КриптоПро 5 R3 КС3.

  2. Установить КриптоПро.
    2.1. Для продуктивного контура:
    2.1.1. Установить КриптоПро c конфигурацией kc2. Для этого выполнить команды от имени root:

    tar -zxvf linux-amd64.tgz && cd ./linux-amd64/
    ./install.sh kc2 cprocsp-pki-cades
    cd -
    

    2.1.2. Установить ПАК "Соболь" по инструкции: https://support.cryptopro.ru/index.php?/Knowledgebase/Article/View/285/2/ispolzovnie-pak-sobol-v-kchestve-dsch-v-kriptopro-csp-n-linux

2.2. Для тестового контура:
2.2.1. Установить КриптоПро c конфигурацией kc1. Для этого выполнить команды от имени root:

tar -zxvf linux-amd64.tgz && cd ./linux-amd64/
./install.sh kc1 cprocsp-pki-cades
cd -
  1. Активировать лицензию:

    /opt/cprocsp/sbin/amd64/cpconfig -license -set "Номер"
    

Установка ключевой пары ИС, зарегистрированной в ЕСИА

  1. Запросить у руководителя проекта реестра повесток контейнер с ключом ИС, зарегистрированной в ЕСИА.

  2. Установить полученную ключевую пару для пользователя, от которого запускается модуль подписания (команды выполняются от имени ervu).
    Внимание! В следующих командах необходимо заменить key_cont.000 на название контейнера, полученного на предыдущем шаге.

mkdir /var/opt/cprocsp/keys/ervu/
cp -r key_cont.000/ /var/opt/cprocsp/keys/ervu/
chmod 700 /var/opt/cprocsp/keys/ervu/key_cont.000
chmod 600 /var/opt/cprocsp/keys/ervu/key_cont.000/*
chown -R ervu:ervu /var/opt/cprocsp/keys/ervu/key_cont.000/
/opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov
  1. Получить перечень сертификатов:

    /opt/cprocsp/bin/amd64/certmgr -list
    

Получить следующие значения:

  • Поле "SHA1 отпечаток": это значение нужно будет указать в конфигурационном файле модуля подписания в качестве настройки <sign_cert_thumbprint>

  • Поле "Ссылка на ключ": убедиться, что значение равно "Есть" (иначе необходимо проверить выполнение предыдущих шагов)

  • Поля "URL сертификата УЦ": по ссылкам, указанным в этом значении, скачать сертификаты УЦ и установить их (описано далее)

  • Поля "URL списка отзыва": в случае отсутствия доступа к УЦ, по ссылкам, указанным в этом значении, скачать CRL и установить их (описано далее)

  1. Установить сертификаты УЦ (поля "URL сертификата УЦ" в свойствах сертификата). Для каждого сертификата выполнить команду от имени root:

    /opt/cprocsp/bin/amd64/certmgr -install -store mRoot -file <sign_ca_cert>.cer
    
  2. В случае отсутствия доступа к УЦ, установить CRL (поле "URL списка отзыва" в свойствах сертификата). Для каждого CRL выполнить команду от имени ervu:

    /opt/cprocsp/bin/amd64/certmgr -install -store uCA -crl -file <sign_ca_crl>.crl
    
  3. (опционально) Сделать тестовую подпись с помощью установленного контейнера и полученных значений <sign_cert_thumbprint> и <sign_cert_password>:

    touch test.txt
    /opt/cprocsp/bin/amd64/cryptcp -signf -thumbprint <sign_cert_thumbprint> -pin <sign_cert_password> -errchain ./test.txt
    rm -f test.txt test.txt.sgn
    

Установка сертификата ЕСИА

  1. Скачать сертификаты тестовой и продуктивной сред ЕСИА, используемые для формирования электронных подписей ответов как поставщика, по ссылке: https://esia.gosuslugi.ru/public/esia.zip

  2. Из списка сертификатов выбрать тот, который подходит под конфигурацию стенда (в зависимости от того, является ли среда тестовой или продуктивной):

Среда \ Алгоритм подписания GOST3410_2012_256
TESIA GOST 2012 new.cer
Тестовая Отпечаток: e654f6114dc19bae84c5748794a4fd7797726e71
Срок действия: по 24.04.2025
----------------------------- -----------------------------------------------------
ГОСТ+ПРОД+24-25.cer
Продуктивная Отпечаток: 20ad21785b9161ef46f075d4dc23c34e1e349228
Срок действия: по 08.06.2025

  1. Установить выбранный сертификат для пользователя, от которого запускается модуль подписания (команды выполняются от имени ervu).

    /opt/cprocsp/bin/amd64/certmgr -install -file '<esia_cert>.cer'
    

Результатом команды будет список полей сертификата. Из него необходимо получить следующие значения:

  • Поле "SHA1 отпечаток": это значение нужно будет указать в конфигурационном файле модуля подписания в качестве настройки <esia_cert_thumbprint>.

  • Поле "Алгоритм подписи": проверить, что значение совпадает с настройками ИС в ЕСИА.

  • Поле "Истекает": проверить, что срок действия сертификата не истёк.

  • Поля "URL сертификата УЦ": по ссылкам, указанным в этом значении, скачать сертификаты УЦ и установить их (описано далее)

  • Поля "URL списка отзыва": в случае отсутствия доступа к УЦ, по ссылкам, указанным в этом значении, скачать CRL и установить их (описано далее)

  1. Установить сертификаты УЦ (поля "URL сертификата УЦ" в свойствах сертификата). Для каждого сертификата выполнить команду от имени root:

    /opt/cprocsp/bin/amd64/certmgr -install -store mRoot -file <esia_ca_cert>.cer
    
  2. В случае отсутствия доступа к УЦ, установить CRL (поле "URL списка отзыва" в свойствах сертификата). Для каждого CRL выполнить команду от имени ervu:

    /opt/cprocsp/bin/amd64/certmgr -install -store uCA -crl -file <esia_ca_crl>.crl
    

Установка и настройка nginx

Дальнейшие шаги выполняются от имени root:

  1. Установить nginx:

    apt-get install nginx
    
  2. Скопировать файл настроек для nginx:

    cp conf/nginx.conf /etc/nginx/
    
  3. Запустить nginx:

    systemctl start nginx
    

Установка и настройка ervu-sign-module

  1. Установить зависимости для запуска приложения:
apt-get install glib2 libfcgi libjson-glib libuuid
  1. Скопировать исполняемый файл:

    mkdir /opt/ervu-sign-module/
    cp ./ervu-sign-module /opt/ervu-sign-module/
    
  2. Скопировать файл настроек:

    cp conf/ervu-sign-module.conf /etc/
    
  3. Скопировать юнит:

    cp ./ervu-sign-module.service /etc/systemd/system/
    
  4. Включить запуск службы при загрузке:

    systemctl enable ervu-sign-module
    
  5. Запустить службу:

    systemctl start ervu-sign-module
    

Проверка

ВАЖНО: все проверки из пунктов ниже необходимо выполнять при каждой установке. Результаты проверки выслать РП команды разработки

Цепочка сертификата ИС

Проверить цепочку сертификатов для сертификата ИС (команда выполняется от имени ervu):

/opt/cprocsp/bin/amd64/certmgr -list -thumbprint <sign_cert_thumbprint> -chain

Результатом команды должна быть строка "Цепочка сертификатов: Успешно проверена."

Подробнее о проверке цепочки сертификатов здесь: https://www.altlinux.org/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%9F%D1%80%D0%BE#%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BF%D0%BE%D1%87%D0%BA%D0%B8_%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D0%B2

Цепочка сертификата ЕСИА

Проверить цепочку сертификатов для сертификата ЕСИА (команда выполняется от имени ervu):

/opt/cprocsp/bin/amd64/certmgr -list -thumbprint <esia_cert_thumbprint> -chain

Результатом команды должна быть строка "Цепочка сертификатов: Успешно проверена."

Подробнее о проверке цепочки сертификатов здесь: https://www.altlinux.org/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%9F%D1%80%D0%BE#%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D1%86%D0%B5%D0%BF%D0%BE%D1%87%D0%BA%D0%B8_%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D0%B2

Подписание

Для проверки работы модуля выполните команду:

/opt/cprocsp/bin/amd64/curl -v http://127.0.0.1/sign -H "Content-Type: text/plain" -d "test"

Вывод должен быть примерно таким (статус-код ответа должен быть равен 200 OK)

* Trying 127.0.0.1:80...
* Connected to 127.0.0.1 (127.0.0.1) port 80
> POST /sign HTTP/1.1
> Host: 127.0.0.1
> 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: Tue, 20 Aug 2024 12:00:25 GMT
< Content-Type: application/json
< Transfer-Encoding: chunked
< Connection: keep-alive
<
{
  "signature": "urlSafeBase64_of_signed_string_test_with_state",
  "state": "7c327cb7-7916-4255-bc46-85fbc5ad7d5f"
}
* Connection #0 to host 127.0.0.1 left intact

Версия приложения

Для того, чтобы узнать версию приложения, введите команду:

/opt/cprocsp/bin/amd64/curl -v http://127.0.0.1/version

В ответе будет получена версия приложения (статус-код ответа должен быть равен 200 OK).

Лицензия КриптоПро

Команда для проверки лицензии КриптоПро:

/opt/cprocsp/sbin/amd64/cpconfig -license -view

Примечания

Подробнее о работе с КриптоПро CSP здесь: