7.7 KiB
Установка модуля подписания
Создание пользователя ervu
- Создать пользователя ervu. Для этого выполнить команды от имени root:
adduser --system --no-create-home --user-group ervu
Установка и настройка КриптоПро
-
Скачать КриптоПро 5 R3 КС3.
-
Установить КриптоПро. Для этого выполнить команды от имени root:
tar -zxvf linux-amd64.tgz && cd ./linux-amd64/
./install.sh
apt-get install ./cprocsp-pki-cades-64-2.0.14815-1.amd64.rpm
cd -
- Активировать лицензию:
/opt/cprocsp/sbin/amd64/cpconfig -license -set "Номер"
Установка ключевой пары ИС, зарегистрированной в ЕСИА
-
Запросить у руководителя проекта реестра повесток контейнер с ключом ИС, зарегистрированной в ЕСИА.
-
Установить полученную ключевую пару для пользователя, от которого запускается модуль подписания (команды выполняются от имени 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
- Получить перечень сертификатов:
/opt/cprocsp/bin/amd64/certmgr -list
Получить следующие значения:
- Поле "SHA1 отпечаток": это значение нужно будет указать в конфигурационном файле модуля подписания в качестве настройки <sign_cert_thumbprint>
- Поле "Ссылка на ключ": убедиться, что значение равно "Есть" (иначе необходимо проверить выполнение предыдущих шагов)
- (опционально) Сделать тестовую подпись с помощью установленного контейнера и полученных значений <sign_cert_thumbprint> и <sign_cert_password>:
touch test.txt
/opt/cprocsp/bin/amd64/cryptcp -signf -thumbprint <sign_cert_thumbprint> ./test.txt
rm -f test.txt test.txt.sgn
Установка сертификата ЕСИА
-
Скачать сертификаты тестовой и продуктивной сред ЕСИА, используемые для формирования электронных подписей ответов как поставщика, по ссылке: https://esia.gosuslugi.ru/public/esia.zip
-
Из списка сертификатов выбрать тот, который подходит под конфигурацию стенда (в зависимости от алгоритма подписи и от того, является ли среда тестовой или продуктивной):
| Среда \ Алгоритм подписания | RS256 | GOST3410_2012_256 |
|---|---|---|
| RSA_TESIA_2024.cer | TESIA GOST 2012 new.cer | |
| Тестовая | Отпечаток: 6a3813240f6cc285e6d4e6d9a4bfeb26038195d8 | Отпечаток: e654f6114dc19bae84c5748794a4fd7797726e71 |
| Срок действия: по 06.08.2034 | Срок действия: по 24.04.2025 | |
| ----------------------------- | ----------------------------------------------------- | ----------------------------------------------------- |
| RSA_PROD_2024.cer | ГОСТ+ПРОД+24-25.cer | |
| Продуктивная | Отпечаток: 29c2f9c8e064d73509eadd685a5508712735e303 | Отпечаток: 20ad21785b9161ef46f075d4dc23c34e1e349228 |
| Срок действия: по 12.05.2025 | Срок действия: по 08.06.2025 |
- Установить выбранный сертификат для пользователя, от которого запускается модуль подписания (команды выполняются от имени ervu).
/opt/cprocsp/bin/amd64/certmgr -install -file '<esia_cert>.cer'
Результатом команды будет список полей сертификата. Из него необходимо получить следующие значения:
- Поле "SHA1 отпечаток": это значение нужно будет указать в конфигурационном файле модуля подписания в качестве настройки <esia_cert_thumbprint>.
- Поле "Алгоритм подписи": проверить, что значение совпадает с настройками ИС в ЕСИА.
- Поле "Истекает": проверить, что срок действия сертификата не истёк.
Установка и настройка nginx
Дальнейшие шаги выполняются от имени root:
- Установить nginx:
apt-get install nginx
- Скопировать файл настроек для nginx:
cp conf/nginx.conf /etc/nginx/
- Запустить nginx:
systemctl start nginx
Установка и настройка ervu-sign-module
- Установить зависимости для запуска приложения:
apt-get install glib2 libfcgi
- Скопировать исполняемый файл:
mkdir /opt/ervu-sign-module/
cp ./ervu-sign-module /opt/ervu-sign-module/
- Скопировать файл настроек:
cp conf/ervu-sign-module.conf /etc/
- Скопировать юнит:
cp ./ervu-sign-module.service /etc/systemd/system/
- Включить запуск службы при загрузке:
systemctl enable ervu-sign-module
- Запустить службу:
systemctl start ervu-sign-module
Проверка
Для проверки работы модуля выполните команду:
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: text/plain
< Transfer-Encoding: chunked
< Connection: keep-alive
<
REFlyzGQrCjX9DvA7hWwN9vf5kPqBxcG4TLYnXUHnAS9_G-sLAFvaJei2OhxpaWNraHbOv_mMsM_bcDsXWiC0Q
* Connection #0 to host 127.0.0.1 left intact