# Установка модуля подписания ## Создание пользователя ervu 1. Создать пользователя ervu. Для этого выполнить команды от имени root: ```bash adduser --system --no-create-home --user-group ervu ``` ## Установка и настройка КриптоПро 1. Скачать КриптоПро 5 R3 КС3. 2. Установить КриптоПро. 2.1. Для продуктивного контура: 2.1.1. Установить КриптоПро c конфигурацией kc2. Для этого выполнить команды от имени root: ```bash 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: ```bash tar -zxvf linux-amd64.tgz && cd ./linux-amd64/ ./install.sh kc1 cprocsp-pki-cades cd - ``` 3. Активировать лицензию: ```bash /opt/cprocsp/sbin/amd64/cpconfig -license -set "Номер" ``` ## Установка ключевой пары ИС, зарегистрированной в ЕСИА 1. Запросить у руководителя проекта реестра повесток контейнер с ключом ИС, зарегистрированной в ЕСИА. 2. Установить полученную ключевую пару для пользователя, от которого запускается модуль подписания (команды выполняются от имени **ervu**). Внимание! В следующих командах необходимо заменить ***key_cont.000*** на название контейнера, полученного на предыдущем шаге. ```bash 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 ``` 3. Получить перечень сертификатов: ```bash /opt/cprocsp/bin/amd64/certmgr -list ``` Получить следующие значения: - Поле "SHA1 отпечаток": это значение нужно будет указать в конфигурационном файле модуля подписания в качестве настройки \ - Поле "Ссылка на ключ": убедиться, что значение равно "Есть" (иначе необходимо проверить выполнение предыдущих шагов) - Поля "URL сертификата УЦ": по ссылкам, указанным в этом значении, скачать сертификаты УЦ и установить их (описано далее) - Поля "URL списка отзыва": в случае отсутствия доступа к УЦ, по ссылкам, указанным в этом значении, скачать CRL и установить их (описано далее) 4. Установить сертификаты УЦ (поля "URL сертификата УЦ" в свойствах сертификата). Для каждого сертификата выполнить команду от имени **root**: ```bash /opt/cprocsp/bin/amd64/certmgr -install -store mRoot -file .cer ``` 5. В случае отсутствия доступа к УЦ, установить CRL (поле "URL списка отзыва" в свойствах сертификата). Для каждого CRL выполнить команду от имени **ervu**: ```bash /opt/cprocsp/bin/amd64/certmgr -install -store uCA -crl -file .crl ``` 6. (опционально) Сделать тестовую подпись с помощью установленного контейнера и полученных значений \ и \: ```bash touch test.txt /opt/cprocsp/bin/amd64/cryptcp -signf -thumbprint -pin -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 | ------------------------------------------------------------------------------------- 3. Установить выбранный сертификат для пользователя, от которого запускается модуль подписания (команды выполняются от имени **ervu**). ```bash /opt/cprocsp/bin/amd64/certmgr -install -file '.cer' ``` Результатом команды будет список полей сертификата. Из него необходимо получить следующие значения: - Поле "SHA1 отпечаток": это значение нужно будет указать в конфигурационном файле модуля подписания в качестве настройки \. - Поле "Алгоритм подписи": проверить, что значение совпадает с настройками ИС в ЕСИА. - Поле "Истекает": проверить, что срок действия сертификата не истёк. - Поля "URL сертификата УЦ": по ссылкам, указанным в этом значении, скачать сертификаты УЦ и установить их (описано далее) - Поля "URL списка отзыва": в случае отсутствия доступа к УЦ, по ссылкам, указанным в этом значении, скачать CRL и установить их (описано далее) 4. Установить сертификаты УЦ (поля "URL сертификата УЦ" в свойствах сертификата). Для каждого сертификата выполнить команду от имени **root**: ```bash /opt/cprocsp/bin/amd64/certmgr -install -store mRoot -file .cer ``` 5. В случае отсутствия доступа к УЦ, установить CRL (поле "URL списка отзыва" в свойствах сертификата). Для каждого CRL выполнить команду от имени **ervu**: ```bash /opt/cprocsp/bin/amd64/certmgr -install -store uCA -crl -file .crl ``` ## Установка и настройка nginx Дальнейшие шаги выполняются от имени root: 1. Установить nginx: ```bash apt-get install nginx ``` 2. Скопировать файл настроек для nginx: ```bash cp conf/nginx.conf /etc/nginx/ ``` 3. Запустить nginx: ```bash systemctl start nginx ``` ## Установка и настройка ervu-sign-module 1. Установить зависимости для запуска приложения: ``` bash apt-get install glib2 libfcgi libjson-glib libuuid ``` 2. Скопировать исполняемый файл: ```bash mkdir /opt/ervu-sign-module/ cp ./ervu-sign-module /opt/ervu-sign-module/ ``` 3. Скопировать файл настроек: ```bash cp conf/ervu-sign-module.conf /etc/ ``` 4. Скопировать юнит: ```bash cp ./ervu-sign-module.service /etc/systemd/system/ ``` 5. Включить запуск службы при загрузке: ```bash systemctl enable ervu-sign-module ``` 6. Запустить службу: ```bash systemctl start ervu-sign-module ``` ## Проверка ВАЖНО: все проверки из пунктов ниже необходимо выполнять при каждой установке. Результаты проверки выслать РП команды разработки ### Цепочка сертификата ИС Проверить цепочку сертификатов для сертификата ИС (команда выполняется от имени **ervu**): ```bash /opt/cprocsp/bin/amd64/certmgr -list -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**): ```bash /opt/cprocsp/bin/amd64/certmgr -list -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 ### Подписание Для проверки работы модуля выполните команду: ```bash /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 ``` ### Версия приложения Для того, чтобы узнать версию приложения, введите команду: ```bash /opt/cprocsp/bin/amd64/curl -v http://127.0.0.1/version ``` В ответе будет получена версия приложения (статус-код ответа должен быть равен 200 OK). ### Лицензия КриптоПро Команда для проверки лицензии КриптоПро: ```bash /opt/cprocsp/sbin/amd64/cpconfig -license -view ``` ### Название и тип криптопровайдера Команда для просмотра типов доступных криптопровайдеров: ```bash /opt/cprocsp/sbin/amd64/cpconfig -defprov -view_type ``` Команда для просмотра свойств криптопровайдера нужного типа: ```bash /opt/cprocsp/sbin/amd64/cpconfig -defprov -view -provtype ``` где \ - это тип криптопровайдера. ## Примечания Подробнее о работе с КриптоПро CSP здесь: - https://www.altlinux.org/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%9F%D1%80%D0%BE - https://wiki.astralinux.ru/pages/viewpage.action?pageId=32833902&ysclid=m2si404crb648040570