Браузер Chrome (Chromium Gost, Chromium Edge): запустите браузер и дождитесь оповещения об установленном расширении «CryptoPro Extension for CAdES Browser Plug-in». Включите это расширение.
Если на Вашем компьютере ранее уже выполнялась установка расширения CryptoPro Extension for CAdES Browser Plug-in, а потом оно был удалено, его потребуется установить отдельно. Для этого перейдите по ссылке и установите расширение из интернет-магазина Chrome.
Браузер Opera или Яндекс.Браузер: расширение доступно по ссылке.
Браузер Firefox: скачайте расширение по ссылке и установите в браузер самостоятельно.
Браузер Microsoft Internet Explorer: не требуется дополнительных настроек.
Nickokow Оставлено | |
Добрый день. 1.1)На сервере с ПО был установлен JCP 2.0.40035 (успешно) 2)Для клиентской машины, которая подписывает, были сгенерированы и добавлены сертификаты. 3)Подписан документ внутри нашей программы (успешно) 4)проверяю подпись на сервере, получаю ошибку Код:
5)Не могу понять, как добавить CRL в хранилище JCP, или как JCP обращаться к локальному списку отозванных сертификатов, или как запретить эту проверку. вывернул все мозги, перечитал все-возможные форумы. ЧЯДНТ. | |
Евгений Афанасьев Оставлено | |
Добрый день. Цитата: 4)проверяю подпись на сервере, получаю ошибку 5)Не могу понять, как добавить CRL в хранилище JCP, или как JCP обращаться к локальному списку отозванных сертификатов, или как запретить эту проверку. В JCP никак не добавить. Если, как сказано в ошибке, укажете в коде System.setProperty(“com.sun.security.enableCRLDP”, “true”), то если в проверяемом сертификате цепочки есть CRLDP (ссылки распространения) для скачивания CRL, они (CRL) будут скачаны из сети и использованы. Если не указано это свойство enableCRLDP или нет доступа к сети (такое бывает), то CRL надо качать отдельно самим и подавать в метод verify(certs, crls) (crls – это список заранее подготовленных X509CRL). Так как используется сертификат из тестового УЦ, CRLDP в нем должен быть, проверьте доступ к crl для скачивания (ссылку на crl можно найти в расширения сертификата и скопировать её в браузер) и включён ли enableCRLDP. Отредактировано пользователем 16 сентября 2021 г. 18:05:49(UTC) | |
Nickokow Оставлено | |
Цитата: укажете в коде System.setProperty(“com.sun.security.enableCRLDP”, “true”) А где именно следует это указывать? Это возможно сделать не java программисту? Цитата: подавать в метод verify(certs, crls) тот-же вопрос, как подать в метод. Цитата: подавать в метод verify(certs, crls) В корневом сертификате из тестового центра нет этих ссылок Цитата: включён ли enableCRLDP. где проверить? p.s работаю с JCP Крипто-про первый раз. И к сожалению не java программист. | |
- Сервис для создания подписей для ЕСИА на nodejs с КриптоПро 4. 0 в докер контейнере
- Принцип работы
- Установка лицензии
- Загрузка корневого сертификата
- Загрузка пользовательского сертификата
- Как запустить
- Рест сервер
- Как по быстрому выпустить тестовый сертификат:
- Авторизация
- Возможные проблемы:
- Env контейнера
- Средства криптографической защиты информации
- Хранение контейнера закрытого ключа
- Установка сертификата из контейнера
- Загрузка и установка корневого сертификата Удостоверяющего Центра и списка отзыва сертификатов
- Установка корневого сертификата Удостоверяющего Центра
- Установка списка отзывов сертификатов
- Копирование контейнера в реестр компьютера
- Настройка проверки формата сертификатов
- Пример настройки плагина
- Дополнительные параметры плагина:
- Настройка выполнения проверки полей сертификата по умолчанию
Сервис для создания подписей для ЕСИА на nodejs с КриптоПро 4. 0 в докер контейнере
Принцип работы
- Устанавливает КриптоПро из установщика
cryptopro/install/linux-amd64_deb.tgz
- Устанавливает лицензию КриптоПро
- Загружает корневой сертификат есиа
- Загружает пользовательский сертификат
- Запускает рест сервер со swagger и методом создания подписей
Установка лицензии
Лицензия устанавливается из аргумента LICENSE, если не указана используется триал версия(работает 3 месяца).
Загрузка корневого сертификата
в зависимости от аргумента ESIA_ENVIRONMENT загружается сертификат нужного окружения есиа:
Корневые сертификаты есиа лежат в папке cryptopro/esia
Загрузка пользовательского сертификата
Необходимо специальным образом сформировать zip-архив certificate_bundle.zip и положить его в папку /cryptopro/certificates.
Пример такого zip-файла лежит в той же директории под названием certificate_bundle_example.zip
Содержимое zip файла:
├── certificate.cer - файл сертификата
└── le-09650.000 - каталог с файлами закрытого ключа
├── header.key
├── masks2.key
├── masks.key
├── name.key
├── primary2.key
└── primary.key
Первый найденный файл в корне архива будет воспринят как сертификат, а первый найденный каталог – как связка файлов закрытого ключа. Пароль от контейнера, если есть, передается аргументом CERTIFICATE_PIN
Как запустить
- Скачать КриптоПро CSP 4.0 для Linux (x64, deb) и положить по пути
install/linux-amd64_deb.tgz
- Подложить архив с сертификатом как
/cryptopro/certificates/certificate_bundle.zip
- Создаем образ
docker build --tag cryptopro-sign --build-arg CERTIFICATE_PIN=12345678 .
- Запускаем
docker run -it --rm -p 3037:3037 --name cryptopro-sign cryptopro-sign
Рест сервер
POST /cryptopro/sign
– подписать текст
Как по быстрому выпустить тестовый сертификат:
- Запустить докер контейнер по инструкции выше
- Заходим в запущенный контейнер
docker exec -ti cryptopro-sign sh
- Создаем запрос на сертификат
cryptcp -creatrqst -dn 'cn=test' -cont '\\.\hdimage\test2' -pin 12345678 tmp/test.csr
(попросит понажимать разные клавиши) - Выводим результат
cat /tmp/test.csr
- Заходим на
http://www.cryptopro.ru/certsrv/certrqxt.asp
и вставляем вывод - В следующем окне выбираем
Base64-шифрование
иСкачать сертификат
- Качаем и сохраняем
certnew.cer
файл в проекте по путиcryptopro/certificates/certnew.cer
- В отдельном терминале переносим файл в запущенный контейнер
docker cp cryptopro/certificates/certnew.cer cryptopro-sign:tmp/test.cer
- Возвращаемся в первый терминал и загружаем сертификат в КриптоПро
cryptcp -instcert -cont '\\.\hdimage\test2' tmp/test.cer
- Попросит ввести пароль. Вводим
12345678
- Переносим на нашу машину приватные ключи
docker cp cryptopro-sign:var/opt/cprocsp/keys/root/test2.000 cryptopro/certificates/test2.000
- В папке проекта
cryptopro/certificates
создаем архив. В архив кладем папкуtest2.000
и файлcertnew.cer
- Архив называем
certificate_bundle.zip
, пересобираем докер образ и запускаем.
Черпал вдохновение и взял многие вещи из этого репозитория
Авторизация
Для использования в продакшене лучше, чтобы сервис был не доступен снаружи инфраструктуры, т.к тут через рест можно что угодно подписать зашитым сертификатом. Если все же инфраструктура открытая, то в сервис следует встроить проверку авторизации.
Возможные проблемы:
Если получаете код ошибки 0x80090010 при вызове метода sign – вероятно срок действия вашего сертификата истек. Попробуйте создать новый по инструкции.
Env контейнера
PORT - numer. Порт рест сервера. Дефолт: 3037
Dmitriy32546
Оставлено
:
28 октября 2021 г. 17:00:59(UTC)
Добрый день.
CryptCP 5.0 (c) “Crypto-Pro”, 2002-2021.debian 10
Установил серты тестового УЦ:/opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file /home/signer/dev_cert2/rootca.cer/opt/cprocsp/bin/amd64/certmgr -inst -store uCa -file /home/signer/dev_cert2/ivanov3_test.cer/opt/cprocsp/bin/amd64/certmgr -install -pfx -file /home/signer/dev_cert2/ivanov3_test.pfx -pin test
Серты генерировал тут
https://www.cryptopro.ru/certsrv/certrqma.asp
При установке корневого сертификата получил предупреждение (ввел “o”):CPCSP: Warning: installing a root certificate with an unconfirmed thumbprint is a security risk. Do you want to install this certificate?Subject: Тестовый головной УЦ ООО “КРИПТО-ПРО” ГОСТ 2012 (УЦ 2.0)Thumbprint (sha1): 9E504E9099C79AA0883FBBFD619662739AC25420(o)OK, (c)Cancel
Информация о установленном сертификате:
signer@dev-scryptopro-service:~$ /opt/cprocsp/bin/amd64/certmgr -list
Certmgr 1.1 (c) “Crypto-Pro”, 2007-2021.
Program for managing certificates, CRLs and stores.
=============================================================================
1——-
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=ivan@ivan.ivan, CN=Ivanov3, OU=IT, O=OOO, L=Moscow, S=Moscow, C=RU
Serial : 0x1200599C37C8A7ABD4384D8BE3000100599C37
SHA1 Thumbprint : c25ad71c6ce796033a15b747c6ed0ebbc210022d
SubjKeyID : d33bdddc5b79f9e455f4fcb79747c2e161535b30
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 13/10/2021 09:10:37 UTC
Not valid after : 13/01/2022 09:20:37 UTC
PrivateKey Link : Yes
Container : HDIMAGE\\Ivanov3.000\0518
Provider Name : Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider
Provider Info : Provider Type: 80, Key Spec: 1, Flags: 0x0
CA cert URL : http://testca.cryptopro….Test%20Center%202(1).crt
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP : http://testca.cryptopro….Test%20Center%202(1).crl
Extended Key Usage : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
Промежуточные:
/opt/cprocsp/bin/amd64/certmgr -list -store uCa
Certmgr 1.1 (c) “Crypto-Pro”, 2007-2021.
Program for managing certificates, CRLs and stores.
=============================================================================
1——-
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Serial : 0x37418882F539A5924AD44E3DE002EA3C
SHA1 Thumbprint : cd321b87fdabb503829f88db68d893b59a7c5dd3
SubjKeyID : 4e833e1469efec5d7a952b5f11fe37321649552b
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2001 (512 bits)
Not valid before : 27/05/2019 07:24:26 UTC
Not valid after : 26/05/2024 07:34:05 UTC
PrivateKey Link : No
2——-
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : E=ivan@ivan.ivan, CN=Ivanov3, OU=IT, O=OOO, L=Moscow, S=Moscow, C=RU
Serial : 0x1200599C37C8A7ABD4384D8BE3000100599C37
SHA1 Thumbprint : c25ad71c6ce796033a15b747c6ed0ebbc210022d
SubjKeyID : d33bdddc5b79f9e455f4fcb79747c2e161535b30
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 13/10/2021 09:10:37 UTC
Not valid after : 13/01/2022 09:20:37 UTC
PrivateKey Link : No
CA cert URL : http://testca.cryptopro….Test%20Center%202(1).crt
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP : http://testca.cryptopro….Test%20Center%202(1).crl
Extended Key Usage : 1.3.6.1.5.5.7.3.2 Проверка подлинности клиента
=============================================================================
Корневые:
/opt/cprocsp/bin/amd64/certmgr -list -store uRoot
Certmgr 1.1 (c) “Crypto-Pro”, 2007-2021.
Program for managing certificates, CRLs and stores.
=============================================================================
1——-
Issuer : C=RU, INNLE=7717107991, E=info@cryptopro.ru, OGRN=1037700085444, S=77 Москва, L=Москва, STREET=ул. Сущёвский вал д. 18, O=”ООО “”КРИПТО-ПРО”””, CN=”Тестовый головной УЦ ООО “”КРИПТО-ПРО”” ГОСТ 2012 (УЦ 2.0)”
Subject : C=RU, INNLE=7717107991, E=info@cryptopro.ru, OGRN=1037700085444, S=77 Москва, L=Москва, STREET=ул. Сущёвский вал д. 18, O=”ООО “”КРИПТО-ПРО”””, CN=”Тестовый головной УЦ ООО “”КРИПТО-ПРО”” ГОСТ 2012 (УЦ 2.0)”
Serial : 0x03453C7B0071ADD9AB4C5FC8A8451F97A7
SHA1 Thumbprint : 9e504e9099c79aa0883fbbfd619662739ac25420
SubjKeyID : 86967f858c1b31aa92a68d14f28cbb1f212f5c3a
Signature Algorithm : ГОСТ Р 34.11-2012/34.10-2012 256 бит
PublicKey Algorithm : ГОСТ Р 34.10-2012 256 бит (512 bits)
Not valid before : 26/07/2021 07:18:42 UTC
Not valid after : 26/07/2036 07:18:42 UTC
PrivateKey Link : No
Написан код для pycades:signer = pycades.Signer()signer.Certificate = cert.Item(1)
signer.CheckCertificate = Truesigner.KeyPin=key_pin
hashedData = pycades.HashedData()hashedData.Algorithm = pycades.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256hashedData.Hash(xml_data)
signedData = pycades.SignedData()signature = signedData.SignHash(hashedData, signer, pycades.CADESCOM_CADES_BES)
При попытке выполнить подпись(signedData.SignHash) получаю ошибку:’A certificate chain processed correctly, but terminated in a root certificate which is not trusted by the trust provider (0x800B0109)’
Дата обновления: 28.06.2022
Номер карточки: SD0012724
Средства криптографической защиты информации
1. Требования к средствам криптографической защиты информации
Для шифрования отправляемых и получаемых документов Вы должны определиться с выбором средства криптографической защиты информации (СКЗИ).
Подробную техническую информацию по перечисленным СКЗИ (версиям, совместимости с операционными системами, алгоритмам подписи и шифрования и т.п.) можно получить на официальных сайтах производителя:
Для VipNet CSP: www.infotecs.ru;
Для КриптоПРО CSP: www.cryptopro.ru.
2. Работа с криптопровайдером «КриптоПРО CSP» и установка сертификатов
Инструкция по установке, настройке ПО «КриптоПРО CSP» доступна здесь.
В отличие от криптопровайдера «VipNet CSP» в криптопровайдере «КриптоПро CSP» лицензия является платной.
Поэтому необходимо не позже 90 суток ввести лицензионный ключ, иначе функции криптопровайдера будут заблокированы.
Хранение контейнера закрытого ключа
Хранение контейнера ключа для криптопровайдера «КриптоПРО CSP» возможно как в реестре компьютера, так и на внешних носителях информации (flesh-носитель, E-токен). Тестовая ЭП предоставляется в файловом режиме, в виде папки с файлами. Ее нужно скопировать на внешний носитель информации (flesh-носитель, E-токен), а затем добавить в интерфейс криптопровайдера.
Установка сертификата из контейнера
Вы получили контейнер закрытого ключа электронной подписи с тестовыми реквизитами. После открытия полученного архива скопируйте содержимое на внешний носитель информации (Flash-носитель), добавьте контейнер(-ы) закрытого ключа электронной подписи в программу криптографии «КриптоПРО CSP» и произведите из него установку сертификата.
Контейнер закрытого ключа электронной подписи будет представлять собой папку с названием: «*****.000», где «звездочки» – наименование, а «.000» – расширение контейнера закрытого ключа
Для установки сертификата из закрытого ключа (контейнера) электронной подписи запустите программу «КриптоПРО CSP»
Далее, в открытом криптопровайдере перейдите на вкладку «Сервис» и нажмите кнопку Просмотреть сертификаты в контейнере
В открывшемся окне нажмите кнопку Обзор
Выберите контейнер закрытого ключа электронной подписи, расположенный на внешнем носителе, из которого необходимо установить сертификат организации и нажмите кнопку ОК
Наименование контейнера отобразилось в поле «Имя ключевого контейнера», нажмите кнопку Далее
Перед Вами откроется окно с информацией о сертификате организации. Для установки сертификата нажмите кнопку Установить
Сертификат установлен в систему Windows.
Для продолжения, в открытом окне нажмите кнопку Свойства
Перед Вами откроется установленный сертификат
Загрузка и установка корневого сертификата Удостоверяющего Центра и списка отзыва сертификатов
На вкладке «Состав» открытого сертификата организации Вы можете получить информацию и ссылку на скачивание корневого сертификата Удостоверяющего Центра и Списка отзывов сертификатов.
Для получения ссылки на скачивание корневого сертификата Удостоверяющего Центра перейдите в поле «Доступ к информации о центрах сертификации» и выделите его курсором мыши.
В открывшейся информации ниже ссылка на скачивание корневого сертификата Удостоверяющего Центра будет отображена в разделе «Доступ к сведениям центра сертификации Метод доступа=Поставщик центра сертификации» в пункте «Дополнительное имя»
Для скачивания файла корневого сертификата скопируйте после «URL=» ссылку в адресную строку браузера и нажмите на клавиатуре кнопку ENTER, а затем сохраните файл в любой каталог
Для получения ссылки на скачивание списка отозванных сертификатов необходимо перейти на вкладку «Состав» и выбрать из списка поле «Точки распространения списков отзыва»
В открывшейся информации в разделе «Имя точки распространения» скопируйте ссылку на загрузку списков отзыва
Для скачивания файла списка отзыва сертификатов скопируйте после «URL=» ссылку в адресную строку браузера и нажмите на клавиатуре кнопку ENTER, а затем сохраните файл в любой каталог
Установка корневого сертификата Удостоверяющего Центра
После скачивания файла корневого сертификата откройте скачанный файл двойным кликом мыши. В открывшемся окне сертификата нажмите кнопку Установить сертификат
Перед Вами откроется «Мастер импорта сертификатов». Следуйте указаниям «Мастера импорта сертификатов». На этапе импорта необходимо указать хранилище сертификатов «Доверенные корневые центры сертификации» и нажать Далее
При появлении окна «Предупреждение системы безопасности», необходимо нажать кнопку ОК для установки сертификата в системное хранилище Windows
После успешного импорта сертификата нажмите Готово.
Во время тестирования и работы сервиса «1С-ЭДО» следует учесть, что данный сервис работает с несколькими операторами ЭДО СФ и соответственно, несколькими Удостоверяющими Центрами.
При обмене документами между контрагентами, работающих через разных Операторов ЭДО СФ, может появиться ошибка подписи, содержащая текст: «Неверна». Если открыть подробную информацию, то сообщение будет выглядеть так: «Сертификат недействителен по причине: Цепочка сертификатов обработана, но прервана на корневом сертификате, который не является доверенным»
В этом случае необходимо сохранить к себе на компьютер сертификат организации через пункт меню «Сохранить в файл» из формы поступившего документа, выгрузить из него корневой сертификат Удостоверяющего центра и установить последний в «Доверенные корневые центры сертификации», как показано выше.
Установка списка отзывов сертификатов
После скачивания файла списка отзывов сертификата и сохранения его в нужный каталог откройте его правой кнопкой мыши через меню «Установить список отзыва (CRL)»
Перед Вами откроется «Мастер импорта сертификатов». Следуйте указаниям «Мастера импорта сертификатов». На этапе импорта необходимо убедиться, что пункт «Автоматически выбрать хранилище на основе типа сертификата» выбран и нажать Далее
После успешного импорта сертификата нажмите Готово.
Проверить корректность выстроенной цепочки сертификатов в системном хранилище Windows Вы можете на вкладке «Путь сертификации». Сертификаты не должны иметь иконок с красными крестами, а в разделе «Состояние сертификата» должен быть статус «Этот сертификат действителен»
Копирование контейнера в реестр компьютера
Если Вы хотите использовать подпись файлов при работе с сервисом «1С-ЭДО», не используя flash-носитель информации, то скопируйте контейнер закрытого ключа электронной подписи в реестр компьютера, затем произвести установку сертификата.
Для этого необходимо вставить flash-носитель информации с контейнером закрытого ключа электронной подписи в компьютер и открыть программу «КриптоПРО CSP»
В интерфейсе «КриптоПРО CSP» перейти на вкладку «Сервис» и нажать кнопку Скопировать
В открытом окне нажмите кнопку Обзор
В следующем окне выберите контейнер закрытого ключа с flash-накопителя информации, который необходимо скопировать и нажмите ОК
В следующем окне задайте имя для контейнера с названием организации, Ф.И.О. ответственного лица и датой создания или копирования, нажмите кнопку Готово
Выберите место хранения копии контейнера закрытого ключа электронной подписи – «Реестр» и нажмите ОК
Задайте новый пароль к контейнеру или введите пароль по умолчанию и нажмите ОК
Контейнер закрытого ключа электронной подписи будет скопирован в выбранное Вами место
Извлеките flash-накопитель из компьютера и произведите установку сертификата из копии контейнера закрытого ключа электронной подписи, расположенной в Реестре компьютера.
Аналогичным способом производится копирование между любыми видами носителя ключа, поддерживаемого криптопровайдером.
Далее пользователю можно приступать к регистрации сертификата в учетной записи.
leopold69 Оставлено | |
Подскажите, пожалуйста, что можно исправить в возникшей ситуации. Есть закрытая сеть в которой работает WEB-ресурс, в котором документы подписываются в WEB-браузере с помощью плагина криптопро. Когда компьютер подключен к этой сети через интернет, посредством vipnet-клиента все подписи работают нормально. Если компьютер включен напрямую в сеть БЕЗ интернета, то подписывается только ЛИЧНОЙ ЭЦП, а на подписи организации, т.е. с ОГРН, Браузер зависает на несколько часов, без сообщений об ошибках. Может нужно разрешить какой-то ресурс для разрешения подписи? Корневые и промежуточные сертификаты установлены. Установлена криптопро 4 под линукс. В той же ситуации под Windows все работает в обоих вариантах | |
Андрей Русев Оставлено | |
Здравствуйте. Код:
| |
leopold69 Оставлено | |
Автор: Андрей Русев Здравствуйте. Код:
Здравствуйте, не получилось сделать вывод в файл и консоль, выполнил команду, и подписал подписью, но результата нет [user@localhost ~]$ /opt/cprocsp/bin/amd64/cryptcp -sign -dn “CN=Евдокимова Татьяна Васильевна” /tmp/test.txt /tmp/test.txt.p7s Будет использован следующий сертификат: ^C После выполнения команды /opt/cprocsp/bin/amd64/cryptcp -sign -dn “CN=Евдокимова Татьяна Васильевна” /tmp/test.txt /tmp/test.txt.p7s Отредактировано пользователем 11 ноября 2021 г. 11:38:14(UTC) | |
leopold69 Оставлено | |
Автор: Андрей Русев Здравствуйте. Код:
Вод вывод команд при подписании в закрытой сети, 1 – с огрн, 1 – личная [user@host066 ~]$ /opt/cprocsp/bin/amd64/cryptcp -sign -dn “SN=Кинякин” /tmp/test.txt /tmp/test.txt.p7s Будет использован следующий сертификат: Цепочка сертификатов не проверена для следующего сертификата: Ошибка: Цепочка сертификатов не проверена для следующего сертификата (код ошибки 10000): Цепочки сертификатов проверены. Подписанное сообщение успешно создано. Будет использован следующий сертификат: Цепочка сертификатов не проверена для следующего сертификата: Один из сертификатов в цепочке возможно отозван. Цепочки сертификатов проверены. Подписанное сообщение успешно создано. | |
leopold69 Оставлено | |
Получается что при наличии интернета отсутствующий в цепочке сертификат подтягивается из интернета? Не могу определить отсутствующий сертификат. | |
leopold69 Оставлено | |
[user@host066 ~]$ CP_PRINT_CHAIN_DETAIL=1 /opt/cprocsp/bin/amd64/cryptcp -copycert -dn ‘SN=Кинякин’ -df /temp/kinyakin.cer Будет использован следующий сертификат: 1.Find path for: There is no valid issuer. Цепочка сертификатов не проверена для следующего сертификата: Ошибка: Цепочка сертификатов не проверена для следующего сертификата (код ошибки 10000): Цепочки сертификатов проверены. | |
Андрей Русев Оставлено | |
Цитата: Получается что при наличии интернета отсутствующий в цепочке сертификат подтягивается из интернета? Именно так. В закрытой сети промежуточные надо ставить в хранилище CA руками (и CRL-и туда же). У вас не хватает E=SupportIIT@infotecs.ru. Код:
Ну и в GUI – в cptools это всё тоже есть. | |
leopold69 Оставлено | |
Автор: Андрей Русев Цитата: Получается что при наличии интернета отсутствующий в цепочке сертификат подтягивается из интернета? Именно так. В закрытой сети промежуточные надо ставить в хранилище CA руками (и CRL-и туда же). У вас не хватает E=SupportIIT@infotecs.ru. Код:
Ну и в GUI – в cptools это всё тоже есть. Спасибо за помощь. Если нам закупят 5 версию конечно потестирую. | |
Настройка проверки формата сертификатов
Сервис Проверки Подписи «КриптоПро SVS» позволяет настроить дополнительную проверку
соответствия полей сертификата установленной форме.
Проверка происходит на основании структуры полей, представленных в следующих правилах.
- Версия (version). Версия сертификата должна быть не ниже 3.
- Серийный номер (serial number). Проверяется наличие номера и отсутствие в нем недопустимых символов.
- Алгоритм подписи (signature). В поле algorithm, входящем в состав поля signature, должен содержаться идентификатор используемого алгоритма подписи:
- ГОСТ Р 34.10–2012 с ключом длиной 256 бит: “1.2.643.7.1.1.3.2”, szOID_CP_GOST_R3411_12_256_R3410
- ГОСТ Р 34.10–2012 с ключом длиной 512 бит: “1.2.643.7.1.1.3.3”, szOID_CP_GOST_R3411_12_512_R3410
- (для архивного хранения и проверки подписи) ГОСТ Р 34.10-2001: “1.2.643.2.2.3”, szOID_CP_GOST_R3411_R3410EL
- Имя издателя (issuer) — проверяется только наличие его в сертификате.
- Дата и время начала действия сертификата (notBefore).
- Дата и время окончания действия сертификата (notAfter).
- Имя владельца сертификата (subject).
Возможна проверка следующих компонентов имени владельца сертификата (компоненты имени проверяются на допустимые символы, длину, если такие требования имеются):- ФИО или наименование владельца (и другие сведения, если требуется) (commonName, title, surname, givenName)
- Местонахождение (countryName, stateOrProvinceName, localityName, streetAddress)
- СНИЛС (SNILS)
- ОГРН (OGRN)
- ОГРНИП (OGRNIP)
- ИНН (INN)
- ИНН юридического лица (ЮЛ) (INNLE)
- совпадение общего имени и наименования организации (CN=O)
- тип идентификации заявителя (identificationKind)
- Открытый ключ (subjectPublicKeyInfo). Проверяется только наличие его в сертификате.
- Дополнения (расширения) сертификата (Extensions). Проверяется только наличие следующих расширений в сертификате.
- Authority Key Identifier, OID.2.5.29.35, идентификатор ключа УЦ.
- Key Usage, OID.2.5.29.15, область использования ключа.
- Certificate Policies, OID.2.5.29.32, политики сертификата. Для данного расширения проверяется содержимое в соответствии с требованиями, указанными в Приказе ФСБ РФ от 27 декабря 2011 г. N 795.
- Subject Sign Tool, OID.1.2.643.100.111, сведения о средстве ЭП владельца сертификата.
- Issuer Sign Tool, OID.1.2.643.100.112, сведения о средствах ЭП УЦ и средствах УЦ.
- ExtendedKeyUsage, OID.2.5.29.37, расширенное использование ключа. Состав дополнения (расширения) зависит от информационной системы, в которой используется сертификат.
- CDP, OID.2.5.29.31, точки распространения списков сертификатов, досрочно прекративших действие (CRL).
- IdentificationKind, OID.1.2.643.100.114, идентификация заявителя.
Проверка сертификата выполняется при помощи специального плагина. Для активации проверки
сертификатов необходимо зарегистрировать плагин с помощью Windows PowerShell. После
установки КриптоПро SVS плагин находится в директории <Путь установки>\cprodss\Plugins\certverifiers\
и называется SVS.CertificateVerifier.Qualified.dll.
Для регистрации и настройки плагина проверки формата сертификатов используются командлеты
Add-VsCertificateVerifierPlugin, Get-VsCertificateVerifierPlugin,
Remove-VsCertificateVerifierPlugin.
Для настройки проверки того, что сертификаты выданы определенным УЦ, необходимо выполнение следующих действий:
зарегистрировать отпечатки корневых сертификатов в КриптоПро SVS. Работа с отпечатками производится при помощи командлетов
Add-VsQualifiedCAThumbprints, Get-VsQualifiedCAThumbprints
и Remove-VsQualifiedCAThumbprints. Если отпечатки не заданы, данная проверка сертификатов проводиться не будет.установить корневые сертификаты УЦ в выделенное хранилище КриптоПро SVS. Хранилище создается автоматически при установке
КриптоПро SVS и имеет название вида <Имя веб-приложения SVS>-TSL.
Пример настройки плагина
# Регистрация плагина и настройка пути к файлу TSL
Add-VsCertificateVerifierPlugin -Assembly SVS.CertificateVerifier.Qualified.dll -PluginDescription "Проверка сертификата на соответствие установленной форме" -Parameters @{'TSLPath'='C:\TSL.xml'}
# Добавление отпечатков корневых сертификатов Минцифры РФ
Add-VsQualifiedCAThumbprints -Thumbprint 4bc6dc14d97010c41a26e058ad851f81c842415a
Add-VsQualifiedCAThumbprints -Thumbprint aff05c9e2464941e7ec2ab15c91539360b79aa9d
Add-VsQualifiedCAThumbprints -Thumbprint 2f0cb09be3550ef17ec4f29c90abd18bfcaad63a
Если плагин зарегистрирован и настроен, в веб-интерфейсе КриптоПро SVS при проверке
сертификата будет выводиться дополнительная информация о соответствии его заданным правилам.
При проверке ЭП также будет осуществляться проверка данного сертификата.
Дополнительные параметры плагина:
- LocationCheck – требовать обязательного наличия компонентов местонахождения. Возможные значения: true, false. Значение по умолчанию false;
- OrganizationNameStrictCheck – требовать совпадения значений компонентов имени CN и O в сертификате. Возможные значения: true, false. Значение по умолчанию false;
- INNforLECheckMode – режим проверки ИНН ЮЛ. Возможные значения: Any, Soft, Strict. Значение по умолчанию Soft.
- Any – требуется присутствие INN и/или INNLE;
- Soft – требуется присутствие INNLE; присутствие INN докускается;
- Strict – требуется присутствие только INNLE.
- TSLPath – полный путь к файлу TSL.
Для проверки УЦ на принадлежность к заданному списку УЦ необходимо указать путь к файлу со списком
УЦ Tsl.xml в параметре TSLPath.
Загрузка файла Tsl.xml возможна следующими способами:
DSS.TslTool.exe --skipcrl --skipcerts --skiproot
Файл TSL будет загружен в папку tmp в каталоге утилиты Dss.TslTool.exe.
- при помощи команды
wget
в консоли Powershell
wget https://e-trust.gosuslugi.ru/app/scc/portal/api/v1/portal/ca/getxml -OutFile E:\tmp\tsl.xml
SVS автоматически отслеживает изменения файла TSL, путь к которому указан в параметре TSLPath.
Скопировать актуальный файл TSL можно с помощью Powershell-скрипта, приведенного ниже.
Данный скрипт возможно добавить в планировщик задач и выполнять раз в сутки (или чаще).
Пример скрипта копирования TSL:
$ErrorActionPreference = "Stop"
# Полный путь к загруженному файлу TSL
$sourceFile = "E:\tmp\tsl_source\tsl.xml"
# Полный путь к файлу TSL, используемому SVS
$destinationFile = "E:\tmp\tsl_target\tsl.xml"
# Загрузка файла TSL
wget https://e-trust.gosuslugi.ru/app/scc/portal/api/v1/portal/ca/getxml -OutFile $sourceFile
if (!(Test-Path $sourceFile -PathType Leaf)) {
# Загруженный файл TSL отсутствует
Write-Host "Файл TSL отсутствует! " $sourceFile
exit 2;
}
$targetFolder1 = Split-Path $destinationFile -Parent
if (!(Test-Path $targetFolder1 -PathType Container)) {
# Не существует каталог, в который требуется скопировать файл TSL
Write-Host "Каталог не существует! " $targetFolder1
exit 2;
}
if (!(Test-Path $destinationFile -PathType Leaf)) {
Write-Host "Копирование нового файла TSL..."
# Целевой файл TSL отсутствует
# Просто копируем файл TSL
Copy-Item $sourceFile -Destination $destinationFile
} else {
# Целевой файл TSL присутствует
# Копируем файл TSL при помощи временного файла
Write-Host "Замена существующего файла TSL... "
$targetFolder = Split-Path $destinationFile -Parent
$tmpTslPath = Join-Path -Path $targetFolder -ChildPath "temp_tsl.xml"
if (Test-Path $tmpTslPath -PathType Leaf) {
# Если временный файл существует, удалим его
Remove-Item $tmpTslPath -Force
}
# Копируем TSL во временный файл
Copy-Item $sourceFile -Destination $tmpTslPath
# Перемещаем TSL в целевой файл
Move-Item $tmpTslPath -Destination $destinationFile -Force
}
Настройка выполнения проверки полей сертификата по умолчанию
Проверка соответствия полей сертификата установленной форме при помощи описанного в данном разделе плагина
может применяться по умолчанию как в веб-интерфейсе SVS, так и при обращении к SVS с использованием REST API.
Для этого в настройках плагина необходимо указать флаг CheckByDefaultRequired.
Set-VsCertificateVerifierPlugin -ID 1 -CheckByDefaultRequired 1
В зависимости от интерфейса SVS данная настройка будет применена следующим образом:
- в веб-интерфейсе SVS – напротив пункта “Проверка сертификата на соответствие установленной форме” (или иной формулировке, если это было указано при настройке плагина) в разделе “Дополнительные проверки” по умолчанию будет активирован чекбокс. Пользователь может самостоятельно отключить проверку, деактивировав данный чекбокс перед отправкой сертификата на проверку.
- при использовании REST API SVS – параметр зависит от переданного в запросе списка CertVerifiersPluginsIds:
- если список передан – проверка не учитывается, будут применены плагины, указанные в списке;
- если список передан со значением NULL – проверка не учитывается, никакие дополнительные проверки к сертификату применяться не будут;
- если список НЕ передан (отсутствует в запросе) – проверка учитывается, сертификат будет проверен в соответствии с настройками плагина, описанного в данном разделе.
Для прикладных систем, взаимодействующих с КриптоПро SVS через REST API, но не умеющих обрабатывать результаты дополнительных
проверок сертификатов (параметр CertificateVerificationResult),
можно включить неуспешный результат проверки в основное сообщение об ошибке (параметр Message).
Данное поведение можно настроить при помощи следующей команды.
Set-VsProperties -IncludeCertPluginErrorInfoInMainError 1
Restart-VsInstance