Как установить сертификат электронной подписи
Для работы электронной подписи в Системе необходимо, чтобы были установлены:
на сервере — криптопровайдер, например, КриптоПро csp 4.0.
для браузера — плагин КриптоПро ЭП Browser plug-in (ссылка на скачивание)
Электронная подпись состоит из связки открытого (личный сертификат) и закрытого ключа шифрования (ключевой контейнер).
Открытый ключ необходим для проверки подлинности документа, а связанный с ним закрытый ключ — для зашифровки данных.
Система поддерживает два вида сертификатов:
на основе стандартных алгоритмов (RSA, SHA-256/512 , …)
на основе ГОСТ алгоритмов 2001 и 2012
Работа с сертификатами, в основе которых лежат стандартные алгоритмы, осуществляется внутренними средствами Системы. Для работы с ними достаточно установить контейнер закрытых ключей и связанный с ним сертификат в Систему.
Работа с сертификатами, в основе которых лежат ГОСТ алгоритмы осуществляется с помощью сервиса подписи (Grad.Signature.Service.jar — сервис, реализованный на java). Соответственно для возможности подписи, необходимо установить вышеуказанный сервис, а также контейнер закрытых ключей и связанный с ним сертификат.
Важно
Сервис подписи обязательно нужно перезапускать после любых действий с сертификатами. Например, при добавлении, удалении, изменении пароля контейнера.
Как настроить сертификат в Конфигураторе
Чтобы электронная подпись работала в Системе нужно указать в Конфигураторе:
Ниже указаны шаги, которые нужно выполнить, чтобы установить контейнеры и сертификаты и включить их в Систему.
Как установить контейнер закрытых ключей и сертификат под Linux (CentOS 7)
Перед установкой проверьте, чтобы в Системе был установлен КриптоПро CSP и КриптоПро JCP.
Примечание
Исполняемые файлы КриптоПро находятся в папке /opt/cprocsp/bin/<архитектура>. В инструкции используются команды для 64-битной архитектуры, папка /opt/cprocsp/bin/amd64.
Установите ключевой контейнер
Скопируйте ключи (директорию с именем в формате 8.3) в директорию /var/opt/cprocsp/keys/имя_пользователя.
При этом необходимо проследить:
владельцем файлов должен быть пользователь, в директории с именем которого расположен контейнер (от его имени будет осуществляться работа с ключами);
на директорию с ключами выставлены права, разрешающие владельцу всё, другим пользователям - ничего;
на файлы ключей выставлены права, разрешающие владельцу чтение и запись, другим пользователям – ничего.
Для проверки корректности установки ключевого контейнера можно выполнить команду:
/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifycontext -fqcn
Пример правильного результата проверки:
Установите цепочку сертификатов, если сертификат отсутствует в контейнере
Скопируйте сертификаты (сертификат пользователя, сертификат промежуточного УЦ, сертификат головного УЦ – может быть разное количество промежуточных сертификатов, в зависимости от цепочки) в директорию /etc/pki/tls/certs.
Установите сертификаты:
/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file /etc/pki/tls/certs/ИмяСертификатаКорневогоУЦ.cer
Например:
/opt/cprocsp/bin/amd64/certmgr -inst -store uroot -file /etc/pki/tls/certs/gus_ca.cer
Пример правильного результата работы команды:
/opt/cprocsp/bin/amd64/certmgr -inst -store uca -file /etc/pki/tls/certs/ИмяСертификатаПромежуточногоУЦ.cer
Например:
/opt/cprocsp/bin/amd64/certmgr -inst -store uca -file /etc/pki/tls/certs/mgis_ca.cer
Пример правильного результата работы команды:
/opt/cprocsp/bin/amd64/certmgr -inst -file /etc/pki/tls/certs/ ИмяСертификата.cer -cont '\\.\ИмяСчитывателя\ИмяКонтейнера'
Например:
/opt/cprocsp/bin/amd64/certmgr -inst -file /etc/pki/tls/certs/mgis_2019.cer -cont '\\.\HDIMAGE\mgis_2019'
Пример правильного результата работы команды:
Проверьте связку закрытого ключа с сертификатом
/opt/cprocsp/bin/amd64/csptest -keyset -check -cont '\\.\ ИмяСчитывателя\ИмяКонтейнера'
Например:
/opt/cprocsp/bin/amd64/csptest -keyset -check -cont '\\.\HDIMAGE\mgis_2019'
Пример правильного результата работы команды:
Если получен сертификат, у которого алгоритм подписи ГОСТовский (например, «ГОСТ Р 34.11-2012/34.10-2012 256 бит»), то:
Перейдите в папку с дистрибутивами КриптоПро:cd ../CryptoPro/linux-amd64_deb;
Установите дополнительный пакет (в зависимости от ОС одна из команд):
yum localinstall cprocsp-rsa-64-4.0.9963-5.x86_64.rpm
dpkg -i cprocsp-rsa-64_4.0.9944-5_amd64.deb
Если пакет не будет установлен, то при установке pfx будет ошибка:
"Error: export in pfx failed"
Запустите команду установки pfx сертификата:
/opt/cprocsp/bin/amd64/certmgr -install -pfx -file /home/user/GEMS/KMGIS.pfx -pin <пароль>
После установки сертификата контейнер может быть установлен с некорректной кодировкой:
CryptoPro CSP: Set password on produced container «…».
В этом случае сервис подписи Grad.Signature не увидит контейнера. Для решения данной проблемы необходимо повторно выполнить установку pfx сертификата, при этом будет создан контейнер с приемлемым названием:
CryptoPro CSP: Set password on produced container «2g9rmj1f4c3ci3o7n0wk66s7o7uds18uhxljg2e».
Полезные команды для проверки сертификатов и лицензий
Вывод всех установленных сертификатов:
/opt/cprocsp/bin/amd64/certmgr -list
Просмотр перечня контейнеров закрытых ключей:
/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifycontext -fqcn
Копирование контейнера:
/opt/cprocsp/bin/amd64/csptest -keycopy -contsrc 'старое имя' -contdest 'новое имя'
Перечень установленных корневых сертификатов удостоверяющих центров:
/opt/cprocsp/bin/amd64/certmgr -list -store uroot
Перечень установленных промежуточных сертификатов удостоверяющих центров:
/opt/cprocsp/bin/amd64/certmgr -list -store uca
Для просмотра информации о лицензии КриптоПро:
/cpconfig -license -view (Утилита cpconfig находится в /opt/cprocsp/sbin/<архитектура>)
Установка лицензии КриптоПро:
/cpconfig -license -set 4040L-00000-00000-B50RQ-TQ1YP
Для просмотра информации о лицензии JavaCSP:
java -classpath JCSP.jar ru.CryptoPro.JCSP.JCSPLicense
Для активации лицензии JavaCsp:
java ru.CryptoPro.JCSP.JCSPLicense -serial "XXXXX-XXXXX-XXXXX-XXXXX-XXXXX" -company "NotInsrt" -store
Чтобы удалить сертификат выполните:
/opt/cprocsp/bin/amd64/certmgr -delete -dn L=Казань
Для просмотра версии JavaCSP:
java ru.CryptoPro.JCP.tools.Check -all
Примечание
Если данная команда не выдаёт ответ, то JavaCSP настроена на неверную Java. Вероятно, несколько версий java установлено на сервер.
Для просмотра версии Крипто Про:
/opt/cprocsp/bin/amd64/csptestf -enum -info
Установка сертификатов из контейнеров закрытых ключей:
/opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov