2025-01-17 10:27:50 +03:00
# Установка модуля подписания
2024-09-12 13:35:57 +03:00
2025-01-17 10:27:50 +03:00
## Создание пользователя ervu
2024-09-12 13:35:57 +03:00
1. Создать пользователя ervu. Для этого выполнить команды от имени root:
2025-01-17 10:27:50 +03:00
```bash
adduser --system --no-create-home --user-group ervu
```
2024-09-12 13:35:57 +03:00
2025-01-17 10:27:50 +03:00
## Установка и настройка КриптоПро
2024-09-12 13:35:57 +03:00
1. Скачать КриптоПро 5 R3 К С 3.
2024-11-14 12:16:55 +03:00
2. Установить КриптоПро.
2025-01-17 10:27:50 +03:00
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
2024-11-14 12:16:55 +03:00
2.2. Для тестового контура:
2.2.1. Установить КриптоПро c конфигурацией kc1. Для этого выполнить команды от имени root:
2025-01-17 10:27:50 +03:00
```bash
2024-11-14 12:16:55 +03:00
tar -zxvf linux-amd64.tgz & & cd ./linux-amd64/
./install.sh kc1 cprocsp-pki-cades
2024-09-12 13:35:57 +03:00
cd -
```
3. Активировать лицензию:
2025-01-17 10:27:50 +03:00
```bash
/opt/cprocsp/sbin/amd64/cpconfig -license -set "Номер"
```
2024-09-12 13:35:57 +03:00
2025-01-17 10:27:50 +03:00
## Установка ключевой пары ИС, зарегистрированной в ЕСИА
2024-11-14 12:16:55 +03:00
1. Запросить у руководителя проекта реестра повесток контейнер с ключом ИС, зарегистрированной в ЕСИА.
2024-09-26 14:02:20 +03:00
2024-11-14 12:16:55 +03:00
2. Установить полученную ключевую пару для пользователя, от которого запускается модуль подписания (команды выполняются от имени **ervu** ).
2025-01-17 10:27:50 +03:00
Внимание! В следующих командах необходимо заменить ** *key_cont.000*** на название контейнера, полученного на предыдущем шаге.
2024-09-26 14:02:20 +03:00
2025-01-17 10:27:50 +03:00
```bash
2024-09-12 13:35:57 +03:00
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
```
2024-11-14 12:16:55 +03:00
3. Получить перечень сертификатов:
2025-01-17 10:27:50 +03:00
```bash
/opt/cprocsp/bin/amd64/certmgr -list
```
2024-10-10 10:48:08 +03:00
Получить следующие значения:
2025-01-17 10:27:50 +03:00
2024-11-14 12:16:55 +03:00
- Поле "SHA1 отпечаток": это значение нужно будет указать в конфигурационном файле модуля подписания в качестве настройки \<sign_cert_thumbprint\>
2025-01-17 10:27:50 +03:00
2024-11-14 12:16:55 +03:00
- Поле "Ссылка на ключ": убедиться, что значение равно "Есть" (иначе необходимо проверить выполнение предыдущих шагов)
2025-01-17 10:27:50 +03:00
2024-11-25 13:06:44 +03:00
- Поля "URL сертификата УЦ": по ссылкам, указанным в этом значении, скачать сертификаты УЦ и установить их (описано далее)
2024-10-10 10:48:08 +03:00
2025-01-17 10:27:50 +03:00
- Поля "URL списка отзыва": в случае отсутствия доступа к УЦ, по ссылкам, указанным в этом значении, скачать CRL и установить их (описано далее)
2024-11-25 13:06:44 +03:00
4. Установить сертификаты УЦ (поля "URL сертификата УЦ" в свойствах сертификата). Для каждого сертификата выполнить команду от имени **root** :
2025-01-17 10:27:50 +03:00
```bash
/opt/cprocsp/bin/amd64/certmgr -install -store mRoot -file < sign_ca_cert > .cer
```
2024-11-25 13:06:44 +03:00
5. В случае отсутствия доступа к УЦ, установить CRL (поле "URL списка отзыва" в свойствах сертификата). Для каждого CRL выполнить команду от имени **ervu** :
2025-01-17 10:27:50 +03:00
```bash
/opt/cprocsp/bin/amd64/certmgr -install -store uCA -crl -file < sign_ca_crl > .crl
```
2024-11-25 13:06:44 +03:00
2025-01-17 10:31:31 +03:00
6. (опционально) Сделать тестовую подпись с помощью установленного контейнера и полученных значений \<sign_cert_thumbprint\> и \<sign_cert_password\>:
2025-01-17 10:27:50 +03:00
```bash
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
```
2024-10-10 10:48:08 +03:00
2025-01-17 10:27:50 +03:00
## Установка сертификата ЕСИА
2024-11-14 12:16:55 +03:00
1. Скачать сертификаты тестовой и продуктивной сред ЕСИА, используемые для формирования электронных подписей ответов как поставщика, по ссылке: https://esia.gosuslugi.ru/public/esia.zip
2024-12-24 12:07:21 +03:00
2. Из списка сертификатов выбрать тот, который подходит под конфигурацию стенда (в зависимости от того, является ли среда тестовой или продуктивной):
2025-01-17 10:27:50 +03:00
| Среда \ Алгоритм подписания | GOST3410_2012_256 |
| ----------------------------- | ----------------------------------------------------- |
| | TESIA GOST 2012 new.cer |
2025-11-05 10:13:01 +03:00
| Тестовая | Отпечаток: b3a7890493bdd95d47c6871627b475e276962bf1 |
| | Срок действия: по 21.04.2026 |
2025-01-17 10:27:50 +03:00
| ----------------------------- | ----------------------------------------------------- |
2025-11-05 10:13:01 +03:00
| | ГО С Т _PROD_25_26.cer |
| Продуктивная | Отпечаток: 2583cca4e2aad8d8170ef73fecc592ccac46821d |
| | Срок действия: по 17.06.2026 |
2025-01-17 10:27:50 +03:00
2024-12-24 12:07:21 +03:00
-------------------------------------------------------------------------------------
2024-11-14 12:16:55 +03:00
3. Установить выбранный сертификат для пользователя, от которого запускается модуль подписания (команды выполняются от имени **ervu** ).
2025-01-17 10:27:50 +03:00
```bash
/opt/cprocsp/bin/amd64/certmgr -install -file '< esia_cert > .cer'
```
2024-11-14 12:16:55 +03:00
Результатом команды будет список полей сертификата. Из него необходимо получить следующие значения:
2025-01-17 10:27:50 +03:00
2024-11-14 12:16:55 +03:00
- Поле "SHA1 отпечаток": это значение нужно будет указать в конфигурационном файле модуля подписания в качестве настройки \<esia_cert_thumbprint\>.
2025-01-17 10:27:50 +03:00
2024-11-14 12:16:55 +03:00
- Поле "Алгоритм подписи": проверить, что значение совпадает с настройками ИС в ЕСИА.
2025-01-17 10:27:50 +03:00
2024-11-14 12:16:55 +03:00
- Поле "Истекает": проверить, что срок действия сертификата не истёк.
2025-01-17 10:27:50 +03:00
2024-11-25 13:06:44 +03:00
- Поля "URL сертификата УЦ": по ссылкам, указанным в этом значении, скачать сертификаты УЦ и установить их (описано далее)
2025-01-17 10:27:50 +03:00
- Поля "URL списка отзыва": в случае отсутствия доступа к УЦ, по ссылкам, указанным в этом значении, скачать CRL и установить их (описано далее)
2024-11-25 13:06:44 +03:00
4. Установить сертификаты УЦ (поля "URL сертификата УЦ" в свойствах сертификата). Для каждого сертификата выполнить команду от имени **root** :
2025-01-17 10:27:50 +03:00
```bash
/opt/cprocsp/bin/amd64/certmgr -install -store mRoot -file < esia_ca_cert > .cer
```
2024-11-25 13:06:44 +03:00
5. В случае отсутствия доступа к УЦ, установить CRL (поле "URL списка отзыва" в свойствах сертификата). Для каждого CRL выполнить команду от имени **ervu** :
2025-01-17 10:27:50 +03:00
```bash
/opt/cprocsp/bin/amd64/certmgr -install -store uCA -crl -file < esia_ca_crl > .crl
```
2024-11-25 13:06:44 +03:00
2025-01-17 10:27:50 +03:00
## Установка и настройка nginx
2024-09-12 13:35:57 +03:00
Дальнейшие шаги выполняются от имени root:
1. Установить nginx:
2025-01-17 10:27:50 +03:00
```bash
apt-get install nginx
```
2024-09-12 13:35:57 +03:00
2. Скопировать файл настроек для nginx:
2025-01-17 10:27:50 +03:00
```bash
cp conf/nginx.conf /etc/nginx/
```
2024-09-12 13:35:57 +03:00
3. Запустить nginx:
2025-01-17 10:27:50 +03:00
```bash
systemctl start nginx
```
2024-09-12 13:35:57 +03:00
2025-01-17 10:27:50 +03:00
## Установка и настройка ervu-sign-module
2024-09-12 13:35:57 +03:00
1. Установить зависимости для запуска приложения:
``` bash
2025-01-10 15:30:09 +03:00
apt-get install glib2 libfcgi libjson-glib libuuid
2024-09-12 13:35:57 +03:00
```
2. Скопировать исполняемый файл:
2025-01-17 10:27:50 +03:00
```bash
mkdir /opt/ervu-sign-module/
cp ./ervu-sign-module /opt/ervu-sign-module/
```
2024-09-12 13:35:57 +03:00
3. Скопировать файл настроек:
2025-01-17 10:27:50 +03:00
```bash
cp conf/ervu-sign-module.conf /etc/
```
2024-09-12 13:35:57 +03:00
4. Скопировать юнит:
2025-01-17 10:27:50 +03:00
```bash
cp ./ervu-sign-module.service /etc/systemd/system/
```
5. Включить запуск службы при загрузке:
```bash
systemctl enable ervu-sign-module
```
6. Запустить службу:
```bash
systemctl start ervu-sign-module
```
2024-09-12 13:35:57 +03:00
2025-01-17 10:27:50 +03:00
## Проверка
ВАЖНО: все проверки из пунктов ниже необходимо выполнять при каждой установке. Результаты проверки выслать РП команды разработки
### Цепочка сертификата ИС
Проверить цепочку сертификатов для сертификата ИС (команда выполняется от имени **ervu** ):
```bash
/opt/cprocsp/bin/amd64/certmgr -list -thumbprint < sign_cert_thumbprint > -chain
2024-09-12 13:35:57 +03:00
```
2025-01-17 10:31:31 +03:00
Результатом команды должна быть строка "Цепочка сертификатов: Успешно проверена."
Подробнее о проверке цепочки сертификатов здесь: 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
2025-01-17 10:27:50 +03:00
### Цепочка сертификата ЕСИА
Проверить цепочку сертификатов для сертификата ЕСИА (команда выполняется от имени **ervu** ):
```bash
/opt/cprocsp/bin/amd64/certmgr -list -thumbprint < esia_cert_thumbprint > -chain
2024-09-12 13:35:57 +03:00
```
2025-01-17 10:31:31 +03:00
Результатом команды должна быть строка "Цепочка сертификатов: Успешно проверена."
Подробнее о проверке цепочки сертификатов здесь: 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
2025-01-17 10:27:50 +03:00
### Подписание
2024-09-12 13:35:57 +03:00
Для проверки работы модуля выполните команду:
2025-01-17 10:27:50 +03:00
```bash
2025-01-17 11:35:51 +03:00
/opt/cprocsp/bin/amd64/curl -v http://127.0.0.1/sign -H "Content-Type: text/plain" -d "test"
2024-09-12 13:35:57 +03:00
```
Вывод должен быть примерно таким (статус-код ответа должен быть равен 200 OK)
2025-01-17 10:27:50 +03:00
2024-09-12 13:35:57 +03:00
```
* 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
2025-01-10 15:30:09 +03:00
< Content-Type: application / json
2024-09-12 13:35:57 +03:00
< Transfer-Encoding: chunked
< Connection: keep-alive
<
2025-01-10 15:30:09 +03:00
{
"signature": "urlSafeBase64_of_signed_string_test_with_state",
"state": "7c327cb7-7916-4255-bc46-85fbc5ad7d5f"
}
2024-09-12 13:35:57 +03:00
* Connection #0 to host 127.0.0.1 left intact
2024-11-14 12:16:55 +03:00
```
### Версия приложения
Для того, чтобы узнать версию приложения, введите команду:
2025-01-17 10:27:50 +03:00
```bash
2025-01-17 11:35:51 +03:00
/opt/cprocsp/bin/amd64/curl -v http://127.0.0.1/version
2024-11-14 12:16:55 +03:00
```
В ответе будет получена версия приложения (статус-код ответа должен быть равен 200 OK).
2024-12-02 12:02:24 +03:00
### Лицензия КриптоПро
Команда для проверки лицензии КриптоПро:
2025-01-17 10:27:50 +03:00
```bash
2024-12-02 12:02:24 +03:00
/opt/cprocsp/sbin/amd64/cpconfig -license -view
```
2025-02-25 11:36:41 +03:00
### Название и тип криптопровайдера
Команда для просмотра типов доступных криптопровайдеров:
```bash
/opt/cprocsp/sbin/amd64/cpconfig -defprov -view_type
```
Команда для просмотра свойств криптопровайдера нужного типа:
```bash
/opt/cprocsp/sbin/amd64/cpconfig -defprov -view -provtype < provtype >
```
где \<provtype\> - это тип криптопровайдера.
2025-01-17 10:27:50 +03:00
## Примечания
2024-11-14 12:16:55 +03:00
Подробнее о работе с КриптоПро CSP здесь:
2025-01-17 10:27:50 +03:00
2024-11-14 12:16:55 +03:00
- 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