Thumbprint сертификата криптопро

Найти сертификат по отпечатку

Profile picture for user Олег

Windows Server

Нашёл на контроллере домена событие Event ID: 64 вида:

Certificate for local system with Thumbprint 23 24 17 36 28 fe c7 37 97 4c c0 9c 20 c1 fe 6b dd c7 9f 50 is about to expire or already expired.

ssl

Известен отпечаток сертификата, нужно по отпечатку определить сам сертификат. Отпечаток:

2324173628fec737974cc09c20c1fe6bddc79f50

Выполняем в PowerShell, указав отпечаток:

Get-ChildItem -Recurse -Path cert:\ | ?{ $_.GetType().Name -eq 'X509Certificate2' } | ?{ $_.Thumbprint -eq '2324173628fec737974cc09c20c1fe6bddc79f50' } | select Subject, PSParentPath, SerialNumber

ssl

В итоге получаем серийный номер:

170000015DE8C6DEB49A0F713200000000015D

Запускаем оснастку mmc:

mmc

ssl

ssl

Выбираем слева Certificates. Add.

ssl

Выбираем хранилище сертификатов. Текущего пользователя, службы или локального компьютера. Скорее всего дохлый сертификат в Computer account. Выбираю. Если не найдём, можно добавить в оснастку сертификаты и из других хранилищ. Next.

ssl

ssl

Отображается оснастка сертификатов. Выделяем Certificates (Local Computer).

ssl

ssl

Указываем серийный номер сертификата, выбираем Look in Field: Serial Number. Find Now.

ssl

Чтиво на ночь


Offline

ioryk

Оставлено
:

6 августа 2021 г. 12:06:39(UTC)

Добрый день
У нас возникла проблема при подключении к ФинЦерт с помощью Stunnel
Конфиг файл во вложении
файл лога stunnel и вывод journalctl также прикладываюThumbprint сертификата криптопро stunnel.png (19kb) загружен 6 раз(а).Thumbprint сертификата криптопро stunnel.log (160kb) загружен 1 раз(а).Thumbprint сертификата криптопро Journalctl.png (126kb) загружен 5 раз(а).
Сертификаты установлены в хранилища
/var/opt.cprocsp/users/username/root.sto
/var/opt.cprocsp/users/username/my.sto
/var/opt.cprocsp/users/username/ca.sto

При отправке запроса появляются ошибки см приложенные логи


Offline

Александр Лавник

Оставлено
:

6 августа 2021 г. 12:11:26(UTC)

Автор: ioryk Перейти к цитате

Добрый день
У нас возникла проблема при подключении к ФинЦерт с помощью Stunnel
Конфиг файл во вложении
файл лога stunnel и вывод journalctl также прикладываюThumbprint сертификата криптопро stunnel.png (19kb) загружен 6 раз(а).Thumbprint сертификата криптопро stunnel.log (160kb) загружен 1 раз(а).Thumbprint сертификата криптопро Journalctl.png (126kb) загружен 5 раз(а).
Сертификаты установлены в хранилища
/var/opt.cprocsp/users/username/root.sto
/var/opt.cprocsp/users/username/my.sto
/var/opt.cprocsp/users/username/ca.sto

При отправке запроса появляются ошибки см приложенные логи

Здравствуйте.

Параметр cert – путь к файлу используемого сертификата в DER-кодировке.


Offline

ioryk

Оставлено
:

6 августа 2021 г. 14:54:32(UTC)

а если указан fingerprint сертификата который находится в хранилище, кодировка же не должна иметь значения?
Или нужно именно путь к файлу в DER кодировке указывать?


Offline

ioryk

Оставлено
:

6 августа 2021 г. 15:00:35(UTC)

Автор: Александр Лавник Перейти к цитате

Автор: ioryk Перейти к цитате

Добрый день
У нас возникла проблема при подключении к ФинЦерт с помощью Stunnel
Конфиг файл во вложении
файл лога stunnel и вывод journalctl также прикладываюThumbprint сертификата криптопро stunnel.png (19kb) загружен 6 раз(а).Thumbprint сертификата криптопро stunnel.log (160kb) загружен 1 раз(а).Thumbprint сертификата криптопро Journalctl.png (126kb) загружен 5 раз(а).
Сертификаты установлены в хранилища
/var/opt.cprocsp/users/username/root.sto
/var/opt.cprocsp/users/username/my.sto
/var/opt.cprocsp/users/username/ca.sto

При отправке запроса появляются ошибки см приложенные логи

Здравствуйте.

Параметр cert – путь к файлу используемого сертификата в DER-кодировке.

Не помогло

bad file format
есть ещё варианты?


Offline

Александр Лавник

Оставлено
:

9 августа 2021 г. 10:44:57(UTC)

Автор: ioryk Перейти к цитате

Автор: Александр Лавник Перейти к цитате

Автор: ioryk Перейти к цитате

Добрый день
У нас возникла проблема при подключении к ФинЦерт с помощью Stunnel
Конфиг файл во вложении
файл лога stunnel и вывод journalctl также прикладываюThumbprint сертификата криптопро stunnel.png (19kb) загружен 6 раз(а).Thumbprint сертификата криптопро stunnel.log (160kb) загружен 1 раз(а).Thumbprint сертификата криптопро Journalctl.png (126kb) загружен 5 раз(а).
Сертификаты установлены в хранилища
/var/opt.cprocsp/users/username/root.sto
/var/opt.cprocsp/users/username/my.sto
/var/opt.cprocsp/users/username/ca.sto

При отправке запроса появляются ошибки см приложенные логи

Здравствуйте.

Параметр cert – путь к файлу используемого сертификата в DER-кодировке.

Не помогло

bad file format
есть ещё варианты?

Здравствуйте.

Приложите лог stunnel после перезапуска stunnel и попытки отправки запроса.


Offline

ioryk

Оставлено
:

9 августа 2021 г. 16:25:41(UTC)

Проблема решена
Загвостка была в том что необходима полная цепочка в указываемом файле с клиентским ключом

Чуть-чуть об установке

  1. что б каждый раз не вводить полный путь до команд крипто
export PATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')$PATH"
  1. так как, выше описная команда измениет переменную PATH тольк на время сесии, это можно исправить так: меняем PATH

  2. если во время установки, к примеру от пользователя www-data, произошла ошибка во время установке pfx, убедитесь, что

  • пользователь есть владелец данной ЭЦП
  • имеет доступ к директории, где лежит ЭЦП
  • если выше два пункта не помогли, попробуйте удалить установленные контейнеры для данного пользователя по пути
  /var/opt/cprocsp/keys/{пользователь}/{контейнер}/

Подпись файла

если сертификат установлен один, то можно подписывать без указания -sign

cryptcp -sign -thumbprint 52eeca8317ffc76c1e9c8c01a837776c36523abd -detach -der "scr.txt" "src.txt.sig" -nochain -norev

Подпись файла с передачей пароля

cryptcp -sign -thumbprint 52eeca8317ffc76c1e9c8c01a837776c36523abd -detach -der "scr.txt" "src.txt.sig" -nochain -norev  -pin 1111

Получить список установленных сертифкатов

certmgr -list

Удалить сертифкат

 certmgr -delete -thumbprint cd321b87fdabb503829f88db68d893b59a7c5dd3

Проверка подписи

 cryptcp -verify -detach -thumbprint 6f601349d9dd1860dd158ca0cc8ff4b377ae87e0 --file 1.txt 1.txt.sig
 

Получаем хеш полученной подписи

certmgr -list -f 1.txt.sig | grep 'SHA1 Hash'

Установка сертифката без закрытого ключа

certmgr -inst -file file.crt

Установка ЭЦП ручной способ

# копируем  
cp -R /path/to/key/999996.000 /var/opt/cprocsp/keys/<username>/
# даем  парва
chmod 600 /var/opt/cprocsp/keys/<username>/999996.000/*
 
# можно сразу установить личные сертификатов из всех доступных контейнеров одной командой: 
/opt/cprocsp/bin/amd64/csptestf -absorb -certs

# смотрим
certmgr -list

Получить тестовое ЭЦП от крипто

Установка ЭЦП в формтае PFX

 # важна  установка  от  sudo и с  полным путем  
 
 sudo /opt/cprocsp/bin/amd64/certmgr -inst  -pfx -pin 1 -file cert_em.pfx
 
 # или 
 
 sudo /opt/cprocsp/bin/amd64/certmgr -inst -store mmy -pfx -pin пин-код -file ~/file.pfx
 
 # ~/file.pfx - полный путь к pfx-файлу.
 
 # и затем  для установки  сертифкатов  из контенеров 
 
 sudo /opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov
 
 # если  сертификат не появился, проверяем  парва на контенйер  в  диретокри 
 
 /var/opt/cprocsp/keys/{пользователь}/{контейнер}/
 

Установка ЭЦП для пользователя www-data

 sudo -u www-data /opt/cprocsp/bin/amd64/certmgr -install -store my -file cert_em.pfx -pfx -pin 1
 

Получени даны окончания сертифката из подписи файла

 # указать в качестве хранилища сертификатов само сообщение (ключ -f): 
 /opt/cprocsp/bin/amd64/cryptcp -verify -f raport.pdf.sig -detached raport.pdf raport.pdf.sig 
 
 CryptCP 5.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект:"АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г.
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

Цепочки сертификатов проверены.
Папка './': raport.pdf...
Проверка подписи..

Автор подписи: "АКЦИОНЕРНОЕ ОБЩЕСТВО ""НАУЧНО-ПРОИЗВОДСТВЕННОЕ ОБЪЕДИНЕНИЕ РУССКИЕ БАЗОВЫЕ
ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ""", Москва, 77 г.
Москва, RU, шоссе Варшавское д. 26, mail@rusbitech.ru
Действителен с 02.10.2018 14:31:02 по 02.10.2019 14:41:02

 Подпись проверена.
[ErrorCode: 0x00000000]

Ссылки

Работа с КриптоПро CSP на AstraLinux


Offline

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)’


Offline

Вадим137

Оставлено
:

9 марта 2022 г. 10:10:03(UTC)

Добрый день! Возникла необходимость подписать около 500 файлов c созданием каждому файлу отдельного файла .sig. Поштучно это будет адская работа….Подскажите есть ли возможность сделать цифровую подпись сразу всем файлам в папке?

Отредактировано пользователем 9 марта 2022 г. 11:20:56(UTC)
| Причина: Не указана


Offline

nickm

Оставлено
:

9 марта 2022 г. 10:25:29(UTC)

Написать командный сценарий с использованием “cryptcp”?

А Вы как сами это видите?
Возможно есть какие-либо предположения?


Offline

Андрей Русев

Оставлено
:

9 марта 2022 г. 10:41:21(UTC)

Здравствуйте.
Для этого предназначен пакетный режим работы cryptcp: -signf. Начиная со сборки 2021-07-18 КриптоПро CSP 5.0.12222 Lilith к нему добавлен ключ -threads для распараллеливания работы по ядрам процессора.

thanks 1 пользователь поблагодарил Андрей Русев за этот пост.


Offline

Вадим137

Оставлено
:

9 марта 2022 г. 11:33:29(UTC)

Можно попросить Вас рассказать немного поподробнее об использовании этого пакетного режима?


Offline

Андрей Русев

Оставлено
:

9 марта 2022 г. 12:32:07(UTC)

Код:

rt-user@test-x64-astra212:~$ /opt/cprocsp/bin/amd64/cryptcp -signf -help
CryptCP 5.0 (Debug version) (c) "КРИПТО-ПРО", 2002-2021.
Утилита командной строки для подписи и шифрования файлов.
Параметры: -signf -help
-signf           создать подписи файлов в 'исходный_файл.sgn'
Формат команды:
cryptcp -signf [-attached|-detached] [-dir <папка>] <КПС1> <маска файлов>
[-cert|-nocert] [-addchain] [-crl] [-der] [-strict] [-nostampcert]
[-stampchaincheck] [-xlongtype1|-cadest|-cadesbes] [-cadestsa <URL>]
[-hashalg <OID>] [-pin <пароль>|-askpin] [-display] [-fext <расширение>]
[-keepbadfiles] [-threads <число>]

-attached        создать присоединённые подписи
-detached        создать отсоединённые подписи в отдельных файлах
-dir <папка>     папка для создания сообщений (по умолчанию текущая)
<КПС1>           КПС автора подписей
<маска файлов>   маска для отбора исходных файлов
-cert            добавить в сообщения сертификат отправителя
-nocert          не добавлять в сообщения сертификат отправителя (по умолчанию)
-addchain        добавить полную цепочку сертификата в подпись
-crl             добавить в сообщения список отозванных сертификатов
-der             использовать формат DER вместо BASE64
-strict          использовать однозначное кодирование DER вместо BER
-nostampcert     не требовать включения в штамп сертификата службы штампов
                 времени
-stampchaincheck проверить цепочку сертификата в штампе времени
-xlongtype1      создать подписи CAdES-X Long Type 1
-cadest          создать подписи CAdES-T
-cadesbes        создать подписи CAdES-BES
-cadestsa        служба штампов времени для CAdES-X Long Type 1, CAdES-T
<URL>            адрес службы штампов в виде "http://..."
-hashalg         задать алгоритм хэширования
<OID>            OID алгоритма хэширования: 1.2.643.2.2.9 для ГОСТ Р 34.11-94
                 1.2.643.7.1.1.2.2 для ГОСТ Р 34.11-2012 256 bit
                 1.2.643.7.1.1.2.3 для ГОСТ Р 34.11-2012 512 bit
-pin <пароль>    задать пароль ключевого контейнера
-askpin          запросить пароль ключевого контейнера из консоли
-display         вывести информацию на экран средства доверенного отображения
                 подписываемых данных
-fext            задать расширение для сообщений
<расширение>     по умолчанию .sig для attached и .sgn для detached
-keepbadfiles    не удалять сообщения при ошибке
-threads <число> число параллельно работающих потоков (по умолчанию 1)

Примеры:
cryptcp -signf -attached -dir ./sign -dn "CN=Test" *.txt -cert
-cadest -cadestsa http://testca.cryptopro.ru/tsp/tsp.srf
Создать присоединенные подписи CAdES-T всех файлов с расширением .txt
из текущей папки, используя сертификат с CN=Test из хранилища Личное (My)
текущего пользователя, добавить в подписи сертификат отправителя;
сохранить подписи в папке sign

cryptcp -signf -detached -dir ./sign -dn "CN=Test" *.txt -fext .p7s
Создать отсоединенные подписи всех файлов с расширением .txt из текущей папки,
используя сертификат с CN=Test из хранилища Личное (My) текущего пользователя;
сохранить подписи с расширением .p7s в папке sign

Критерий поиска сертификатов (КПС/КПС1):
[-dn <RDN>]n раз [-issuer] [-m[<имя>]|u[<имя>]|-f <файл>]k раз [-all|-1|-q<N>]
[-thumbprint <отпечаток>] [-nochain|-errchain [-norev|-nonet]]

-dn              указать строки для поиска в RDN; при вводе нескольких -dn
                 будет найдено большее количество сертификатов
<RDN>            список строк для поиска сертификатов (через запятую); будут
                 найдены сертификаты, в RDN субъекта/издателя которых
                 присутствуют все эти строки
-issuer          использовать RDN издателя для поиска
-m               осуществить поиск в хранилищах компьютера (LOCAL_MACHINE)
-u               осуществить поиск в хранилищах пользователя (CURRENT_USER)
<имя>            название хранилища (по умолчанию "My" для создания подписи
                 или расшифровки и "My+Addressbook" для остальных случаев)
-f               использовать сообщение или файл сертификата
<файл>           имя файла
-all             использовать все найденные сертификаты (по умолчанию для КПС)
-1               должен быть найден только один сертификат, иначе вернуть
                 ошибку (по умолчанию для КПС1)
-q<N>            если найдено менее N сертификатов, вывести запрос для выбора
                 нужного (по умолчанию N=10)
-thumbprint      осуществить поиск по отпечатку сертификата
<отпечаток>      отпечаток сертификата
-nochain         не проверять цепочки найденных сертификатов
-errchain        завершать выполнение с ошибкой, если хотя бы один сертификат
                 не прошел проверку
-norev           не проверять сертификаты в цепочке на предмет отозванности
-nonet           использовать только кэшированные URL при построении цепочки

[ErrorCode: 0x00000000]

Ещё пример:

Код:

rt-user@test-x64-astra212:~$ /opt/cprocsp/bin/amd64/cryptcp -signf -errchain -dn 'E=mail512b@cryptopro.ru, CN=mail512b' -detached /usr/rtests/data/test.dat? -dir /usr/rtests/data/signs/ -cert -threads 2
CryptCP 5.0 (c) "Crypto-Pro", 2002-2021.
Command prompt Utility for file signature and encryption.

The following certificate will be used:
RDN:mail512b@cryptopro.ru, mail512b
Valid from 08.03.2022 19:22:46 to 09.03.2032 02:02:46

Number of threads: 2

Folder '/usr/rtests/data/':
/usr/rtests/data/test.dat0
/usr/rtests/data/test.dat2
Signing the data...
Signing the data...
Signed message is created.
/usr/rtests/data/test.dat1
Signing the data...
Signed message is created.
Signed message is created.
/usr/rtests/data/test.dat3
Signing the data...
Signed message is created.
[ErrorCode: 0x00000000]

Отредактировано пользователем 9 марта 2022 г. 12:34:32(UTC)
| Причина: Не указана

thanks 2 пользователей поблагодарили Андрей Русев за этот пост.

nickm

оставлено 09.03.2022(UTC),

notarget

оставлено 27.07.2022(UTC)


Offline

Chemannnnn

Оставлено
:

30 ноября 2021 г. 13:58:23(UTC)

Добрый день!
Прошу помощи в решении следующих задач:
1. С полученного XML со “встроенной” (прикреплённой) в него ЭЦП нужно снять электронную подпись, используя код Java. Подпись может находиться в начале (перед самим XML текстом) и в конце файла (после XML текста), а также фрагментами в середине XML, если файл довольно большого размера;
2. Получить только сами XML данные (т.е. только XML без электронной подписи).

Пример XML файла с подписью:

Подпись CMS/PKCS#7 в DER кодировке.
Алгоритм подписи: ГОСТ Р 34.10-2012
Загрузил с сайта архив “jcp-2.0.40035.zip” (КриптоПро JCP и JTLS R2 (2.0.40035)) и в нём нашёл “samples-sources.jar”, но так и не понял какие именно примеры (классы) мне нужны для реализации этих задач.
Поискал похожие темы на форуме, почитал документацию, но разобраться так и не удалось. Насколько понял, сначала нужно верифицировать (проверить) подпись и если она проходит верификацию, то после этого можно изъять “чистый” XML (без самой подписи). Не понял, удаляется ли подпись из XML при верификации?
Если понимаю этот процесс НЕправильно, то прошу кратко описать шаги по снятию подписи с XML и дальнейшего получения XML без подписи.
А главное, прошу подсказать, какие именно примеры (из каких классов) мне нужно использовать, чтобы реализовать эту задачу на Java, используя JCP.
Заранее спасибо за ответы!

Отредактировано пользователем 30 ноября 2021 г. 17:25:40(UTC)
| Причина: Не указана


Offline

Chemannnnn

Оставлено
:

8 декабря 2021 г. 15:48:16(UTC)

Отвечу сам себе…
В скачанном с сайта архиве “jcp-2.0.40035.zip” в папке “javadoc” нашёл пример в “CAdES-javadoc.jar” (класс CAdESSignature, пример с использованием метода getSignedContent):

Для получения данных без подписи закомментировал строку №12 (сертификаты) и две последних строки – №35 (декодирование подписи) и №36 (проверка подписи). Код с этими закомментированными строками работает – “чистые” данные (без прикреплённой подписи PKCS7) из подписанного файла получается достать.

Но остались вопросы:
1. Для проверки подписи обязательно нужно декодировать её перед проверкой (верно ли понял, что декодируется она из base64)?
2. Для проверки (и декодирования) подписи нужны сертификаты? Т.е. строку №12 примера нужно раскомментировать и добавить множество сертификатов (или один корневой), а затем выполнить проверку подписи для этого множества сертификатов, верно?
3. Верно ли понимаю, что в “Контрольной панели” JCP на закладке “Хранилища ключей и сертификатов” нужно создать Хранилище сертификатов и добавить в него доверенный сертификат для проверки подписи?
И нужно ли на закладке “Алгоритмы” настроить тип провайдера и его параметры (параметры подписи в том числе) для работы с проверяемым типом подписи (или можно оставить там настройки по умолчанию)?

P.S. Пробовал выполнить c раскомментированными строками №35 и №36 (вместо сертификатов указал null) и получил следующие исключения:

Отредактировано пользователем 8 декабря 2021 г. 17:19:01(UTC)
| Причина: Не указана


Offline

Санчир Момолдаев

Оставлено
:

8 декабря 2021 г. 22:47:07(UTC)

Добрый день!

Код:

        BufferedCAdESSignature bufferedCAdESSignature = new BufferedCAdESSignature(signToVerify, null, null);
        InputStream is = bufferedCAdESSignature.getSignedContent();
        byte[] dataFromSign = new byte[is.available()];
        is.read(dataFromSign);
        is.close();
        System.out.println(new String(dataFromSign, StandardCharsets.UTF_8));

то что вы указали в первом сообщении по всей видимости это DER представление ASN.1
это не Base64.

если у вас подпись base64, то ее необходимо перекодировать из base64 и подать в конструктор

thanks 1 пользователь поблагодарил Санчир Момолдаев за этот пост.


Offline

Евгений Афанасьев

Оставлено
:

10 декабря 2021 г. 12:22:28(UTC)

Здравствуйте.
1-2. “С полученного XML со “встроенной” (прикреплённой) в него ЭЦП нужно снять электронную подпись” – судя по приложенному далее сообщению, наоборот, это XML в качестве подписанных данных в CMS подписи.
3. “сначала нужно верифицировать (проверить) подпись и если она проходит верификацию, то после этого можно изъять “чистый” XML (без самой подписи).” – не обязательно, данные находятся в верхней части подписи и могут быть извлечены, например, с помощью CAdESSignature или более низкоуровневых примеров из пакета CMS_samples архива samples-sources.jar, пример CMSVerify.
“Не понял, удаляется ли подпись из XML при верификации?” – не подпись из XML, а XML из подписи в качестве данных не удаляется.
4. “Для проверки подписи обязательно нужно декодировать её перед проверкой (верно ли понял, что декодируется она из base64)?” – если она в base64, то да, нужно из base64 в binary.
5. “Для проверки (и декодирования) подписи нужны сертификаты? Т.е. строку №12 примера нужно раскомментировать и добавить множество сертификатов (или один корневой), а затем выполнить проверку подписи для этого множества сертификатов, верно?” – сертификаты могут понадобиться для проверки, зависит от формата подписи. Если не ошибаюсь, извлечь данные можно не проверяя подпись.
6. “Верно ли понимаю, что в “Контрольной панели” JCP на закладке “Хранилища ключей и сертификатов” нужно создать Хранилище сертификатов и добавить в него доверенный сертификат для проверки подписи?
И нужно ли на закладке “Алгоритмы” настроить тип провайдера и его параметры (параметры подписи в том числе) для работы с проверяемым типом подписи (или можно оставить там настройки по умолчанию)?” – нет, корневые добавляются в cacerts. В “Алгоритмах” ничего настраивать не нужно.
7. “Пробовал выполнить c раскомментированными строками №35 и №36 (вместо сертификатов указал null) и получил следующие исключения” – вы строго задали проверить подпись, как CAdES-BES, но она не соответствует этому формату. Задайте null вместо CAdES-BES в CAdESSignature.

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.


Offline

Chemannnnn

Оставлено
:

10 декабря 2021 г. 17:22:26(UTC)

Здравствуйте. Благодарю за ответы. Немного разобравшись в терминах, почитав форум и исправив код получаю следующую ситуацию:
1. Из подписанного файла *.p7s с прикреплённой подписью (подпись в DER кодировке) с помощью “КриптоАРМ” получилось вытащить сертификат и загрузить его в доверенные JRE при помощи утилиты keytool (как это указано в руководстве программиста, приложенном к архиву с JCP):

При загрузке забыл указать параметр “-trustcacerts”, но keytool спросил про это и я ответил утвердительно – сертификат был добавлен в хранилище как доверенный:

При листинге содержимого хранилища добавленный алиас сертификата отображается, отпечаток совпадает (проверил):

2. Исправил код, приведённый раннее в сообщении #2 (под верхним спойлером). Подписанные данные выгружаются в файл. Добавленный в хранилище сертификат тоже успешно вытаскивается из хранилища:

Но при проверке подписи этим сертификатом (в строке #55) выбрасывается исключение:

Строку #54 закомментировал, т.к. кодировка подписи DER (насколько понял, decode требуется при base64).
Дебагом проверял – из хранилища сертификатов вытаскивается именно загруженный сертификат (который был извлечён из подписанного файла).
3. Смущает сам сертификат, извлечённый из подписанного файла. Читал, что в хранилище сертификаты должны быть загружены в виде цепочки: корневой, промежуточный, сертификат подписи (могу ошибаться), как показано на скриншоте “Пути сертификации” в этом сообщении – ССЫЛКА
“Путь сертификации” извлечённого из подписанного файла сертификата выглядит так:

При этом проверка подписи в “КриптоАРМ” завершается ошибкой, в а подробной информации о подписи следующий текст:

В системе установлен сам JCP (в JRE) и “КриптоАРМ” для извлечения сертификата. КриптоПро CSP не установлен (он нужен?).

Отредактировано пользователем 10 декабря 2021 г. 17:56:25(UTC)
| Причина: Не указана


Offline

Евгений Афанасьев

Оставлено
:

10 декабря 2021 г. 18:37:54(UTC)

Автор: Chemannnnn Перейти к цитате

при проверке подписи этим сертификатом (в строке 55) выбрасывается исключение

Сначала надо вызвать decode, потом verify.

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.


Offline

Chemannnnn

Оставлено
:

10 декабря 2021 г. 19:24:25(UTC)

Раскомментировал строку кода #54 (decode) – она отрабатывает без ошибок. Но на строке кода #55 (verify) теперь выбрасывается следующее исключение:


Offline

Евгений Афанасьев

Оставлено
:

10 декабря 2021 г. 21:14:52(UTC)

Теперь ошибка о том, что не удается построить цепочку. Если корневой сертификат цепочки установлен в cacerts, то возможно, существует также промежуточный, который надо передать в verify.

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.


Offline

Chemannnnn

Оставлено
:

16 декабря 2021 г. 10:03:40(UTC)

Автор: Евгений Афанасьев Перейти к цитате

Теперь ошибка о том, что не удается построить цепочку. Если корневой сертификат цепочки установлен в cacerts, то возможно, существует также промежуточный, который надо передать в verify.

Ещё раз спасибо за помощь, разобрался.
Оказалось, что в хранилище доверенных сертификатов JRE (cacerts) добавил только пользовательский (личный) сертификат, который достал из подписи с помощью КриптоАРМ. Затем у этого сертификата на закладке “Состав” в поле “Доступ к информации о центрах сертификации” внизу нашёл URL к сертификату Удостоверяющего Центра (УЦ) и тоже добавил его в хранилище cacerts в качестве доверенного.
Причём работает даже вариант кода:

т.е. без передачи множества сертификатов в метод verify (JCP, видимо, сама проверяет наличие всей цепочки нужных сертификатов в хранилище).
Т.е. в моём случае, насколько я понял, для неквалифицированных сертификатов ЭП «цепочка доверия» может состоять только из двух звеньев: УЦ — пользователь. Поскольку квалифицированные сертификаты могут выдавать только аккредитованные УЦ, то в цепочке три звена: Минцифры — аккредитованный УЦ — пользователь.

Автор: Захар Тихонов Перейти к цитате

Корневой сертификат достаточно установить в mRoot.
А CRL от тестового УЦ доступны на клиенте и на сервере по URL из сертификатов?
На клиенте выполните
1. csptest -tlsc -server bend.ru -port 443 -v -nosave
2. Разкоментируйте строчку и перезапустите службу и выполните
csptest -tlsc -server bend.ru -port 443 -v -nosave -user thumbprint
thumbprint – это отпечаток клиентского сертификата. И приложите сертификат клиента и сервера.

CRL от тестового УЦ доступны на клиенте – ДА, на сервере -НЕТ, но установил руками в mCA.

Без требования клиентского сертификата csptest -tlsc -server bend.ru -port 443 -v -nosave

Цитата:

11 algorithms supported:
Aglid Class OID
[00] 0x661e 0x6000 1.2.643.2.2.21 (ГОСТ 28147-89)
[01] 0x6631 0x6000 1.2.643.7.1.1.5.2 (ГОСТ Р 34.12-2015 Кузнечик)
[02] 0x6630 0x6000 1.2.643.7.1.1.5.1 (ГОСТ Р 34.12-2015 Магма)
[03] 0x801e 0x8000 1.2.643.2.2.3 (ГОСТ Р 34.11/34.10-2001)
[04] 0x8021 0x8000 1.2.643.7.1.1.2.2 (ГОСТ Р 34.11-2012 256 бит)
[05] 0x801f 0x8000
[06] 0x803d 0x8000
[07] 0x803c 0x8000
[08] 0x2e23 0x2000 1.2.643.2.2.19 (ГОСТ Р 34.10-2001)
[09] 0x2e49 0x2000 1.2.643.7.1.1.1.1 (ГОСТ Р 34.10-2012 256 бит)
[10] 0x2e3d 0x2000 1.2.643.7.1.1.1.2 (ГОСТ Р 34.10-2012 512 бит)
Cipher strengths: 256..256
Supported protocols: 0xa80:
Transport Layer Security 1.0 client side
Transport Layer Security 1.1 client side
Transport Layer Security 1.2 client side
dwProtocolMask: 0x800e2aaa
Protocol version: 3.3
ClientHello: RecordLayer: TLS, Len: 165
SessionId: (empty)
Cipher Suites: (c1 00) (c1 01) (c1 02) (ff 85) (00 81) (c0 30) (c0 2f) (c0 28) (c0 27) (c0 14) (c0 13) (00 9d) (00 9c) (00 3d) (00 3c) (00 35) (00 2f) (00 0a)
170 bytes of handshake data sent
1460 bytes of handshake data received
2904 bytes of handshake data received
229 bytes of handshake data sent
63 bytes of handshake data received
Handshake was successful
SECPKG_ATTR_SESSION_INFO: Reuse: 0, SessionId: 120957f94feae1da7d3264c453f5b1ebd8831ca4aa2658646a082f1fe4e35bea

SECPKG_ATTR_CIPHER_INFO: Version: 1
SECPKG_ATTR_CIPHER_INFO: Protocol: 303
SECPKG_ATTR_CIPHER_INFO: CipherSuite: c100, TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC
SECPKG_ATTR_CIPHER_INFO: BaseCipherSuite: c100
SECPKG_ATTR_CIPHER_INFO: Cipher: GR 34.12-15 K, Len: 256, BlockLen: 1
SECPKG_ATTR_CIPHER_INFO: Hash: GR 34.11-2012 256, Len: 256
SECPKG_ATTR_CIPHER_INFO: Exchange: GOST DH 34.10-2012 256, MinLen: 512, MaxLen: 512
SECPKG_ATTR_CIPHER_INFO: Certificate: GR 34.10-2012 256, KeyType: 0

SECPKG_ATTR_CONNECTION_INFO: Protocol: 0x800 (TLS 1.2)SECPKG_ATTR_CONNECTION_INFO: Cipher: 0x6631SECPKG_ATTR_CONNECTION_INFO: Cipher strength: 256SECPKG_ATTR_CONNECTION_INFO: Hash: 0x8021SECPKG_ATTR_CONNECTION_INFO: Hash strength: 256SECPKG_ATTR_CONNECTION_INFO: Exch: 0xaa47SECPKG_ATTR_CONNECTION_INFO: Key exchange strength: 512

SECPKG_ATTR_KEY_INFO: KeySize: 256SECPKG_ATTR_KEY_INFO: SignatureAlgorithm: 0x2e23, Name: GOST R 34.11SECPKG_ATTR_KEY_INFO: EncryptAlgorithm: 0x6631, Name: GR 34.12-2015 Kuznyechik

SECPKG_ATTR_SUPPORTED_SIGNATURES: Supported signatures: (ee ee) (40 08) (ef ef) (41 08) (ed ed)

SECPKG_ATTR_NAMES: STREET=”улица , дом 1″, UnstructuredName=”INNLE=77553423/KPP=88888888/OGRN=1111111111″, INNLE=72222222, E=info@ru, OGRN=22222222222, C=RU, S=77 Москва, L=Москва, O=”АО “”COMPANY”””, CN=”АО “”COMPANY”””

SECPKG_ATTR_PACKAGE_INFO: fCapabilities: 0x107B3SECPKG_ATTR_PACKAGE_INFO: wVersion: 1SECPKG_ATTR_PACKAGE_INFO: wRPCID: 65535SECPKG_ATTR_PACKAGE_INFO: cbMaxToken: 16379SECPKG_ATTR_PACKAGE_INFO: Name: CryptoPro SSPSECPKG_ATTR_PACKAGE_INFO: Comment: CryptoPro Security Package

Server certificate:
Subject: STREET=”улица , дом 1″, UnstructuredName=”INNLE=77553423/KPP=88888888/OGRN=1111111111″, INNLE=72222222, E=info@ru, OGRN=22222222222, C=RU, S=77 Москва, L=Москва, O=”АО “”COMPANY”””, CN=”АО “”COMPANY”””
Valid : 27.05.2022 09:14:17 – 27.05.2023 09:24:17 (UTC)
Issuer : E=uc@roseltorg.ru, OGRN=1097746299353, INN=007707704692, C=RU, S=77 Москва, L=Москва, STREET=”ул. Кожевническая, д. 14, стр. 5″, OU=Удостоверяющий центр, O=”АО “”ЕЭТП”””, CN=”АО “”ЕЭТП”””
PrivKey: 27.05.2022 09:14:16 – 27.05.2023 09:14:16 (UTC)

SECPKG_ATTR_STREAM_SIZES: Header: 5, Trailer: 16, MaxMessage: 16384
SECPKG_ATTR_STREAM_SIZES: Buffers: 4, BlockSize: 1

SECPKG_ATTR_SIZES: MaxToken: 16384
SECPKG_ATTR_SIZES: MaxSignature: 16
SECPKG_ATTR_SIZES: BlockSize: 1
SECPKG_ATTR_SIZES: SecurityTrailer: 21

HTTP request: GET / HTTP/1.1
User-Agent: Webclient
Accept:*/*
Host: bend.ru
Connection: close

Sending plaintext: 100 bytes
142 bytes of application data sent
314 bytes of (encrypted) application data received
Decrypted data: 270 bytes
Extra data: 23 bytes
Context expired: OK if file is completely downloaded
Reply status: HTTP/1.1 200 OK
Sending Close Notify
23 bytes of handshake data sent
1 connections, 270 bytes in 0.237 seconds;
Total: SYS: 0.030 sec USR: 0.040 sec UTC: 0.260 sec
[ErrorCode: 0x00000000]

С требованием клиентского сертификата csptest -tlsc -server bend.ru -port 443 -v -nosave

Цитата:

11 algorithms supported:
Aglid Class OID
[00] 0x661e 0x6000 1.2.643.2.2.21 (ГОСТ 28147-89)
[01] 0x6631 0x6000 1.2.643.7.1.1.5.2 (ГОСТ Р 34.12-2015 Кузнечик)
[02] 0x6630 0x6000 1.2.643.7.1.1.5.1 (ГОСТ Р 34.12-2015 Магма)
[03] 0x801e 0x8000 1.2.643.2.2.3 (ГОСТ Р 34.11/34.10-2001)
[04] 0x8021 0x8000 1.2.643.7.1.1.2.2 (ГОСТ Р 34.11-2012 256 бит)
[05] 0x801f 0x8000
[06] 0x803d 0x8000
[07] 0x803c 0x8000
[08] 0x2e23 0x2000 1.2.643.2.2.19 (ГОСТ Р 34.10-2001)
[09] 0x2e49 0x2000 1.2.643.7.1.1.1.1 (ГОСТ Р 34.10-2012 256 бит)
[10] 0x2e3d 0x2000 1.2.643.7.1.1.1.2 (ГОСТ Р 34.10-2012 512 бит)
Cipher strengths: 256..256
Supported protocols: 0xa80:
Transport Layer Security 1.0 client side
Transport Layer Security 1.1 client side
Transport Layer Security 1.2 client side
dwProtocolMask: 0x800e2aaa
Protocol version: 3.3
ClientHello: RecordLayer: TLS, Len: 165
SessionId: (empty)
Cipher Suites: (c1 00) (c1 01) (c1 02) (ff 85) (00 81) (c0 30) (c0 2f) (c0 28) (c0 27) (c0 14) (c0 13) (00 9d) (00 9c) (00 3d) (00 3c) (00 35) (00 2f) (00 0a)
170 bytes of handshake data sent
1460 bytes of handshake data received
1460 bytes of handshake data received
2718 bytes of handshake data received
Server requested new credentials!

Trying to create new credential
Issuer 0: E=client@test.com, CN= ТЕСТ, OU=IT, O=IT, L=Moscow, S=Moscow, C=RU
Issuer 1: E=uc@roseltorg.ru, OGRN=1097746299353, INN=007707704692, C=RU, S=77 Москва, L=Москва, STREET=”ул. Кожевническая, д. 14, стр. 5″, OU=Удостоверяющий центр, O=”АО “”ЕЭТП”””, CN=”АО “”ЕЭТП”””
Issuer 2: STREET=”улица , дом 1″, UnstructuredName=”INNLE=742143224/KPP=7432141/OGRN=103423477″, INNLE=7424224, E=info@ru, OGRN=1042314327, C=RU, S=77 Москва, L=Москва, O=”АО “””””, CN=”АО “””””
Issuer 3: E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET=”улица Тверская, дом 7″, O=Минкомсвязь России, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России
Issuer 4: E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Issuers: 5, Length: 1261 bytes

Client certificate:
Subject: E=client@test.com, CN=ТЕСТ, OU=IT, O=IT, L=Moscow, S=Moscow, C=RU
Valid : 26.05.2022 14:37:01 – 26.08.2022 14:47:01 (UTC)
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
CPCSP: CryptoPro CSP license is expired or not yet valid.
(o) OK
OK

new schannel credential created
11 algorithms supported:
Aglid Class OID
[00] 0x661e 0x6000 1.2.643.2.2.21 (ГОСТ 28147-89)
[01] 0x6631 0x6000 1.2.643.7.1.1.5.2 (ГОСТ Р 34.12-2015 Кузнечик)
[02] 0x6630 0x6000 1.2.643.7.1.1.5.1 (ГОСТ Р 34.12-2015 Магма)
[03] 0x801e 0x8000 1.2.643.2.2.3 (ГОСТ Р 34.11/34.10-2001)
[04] 0x8021 0x8000 1.2.643.7.1.1.2.2 (ГОСТ Р 34.11-2012 256 бит)
[05] 0x801f 0x8000
[06] 0x803d 0x8000
[07] 0x803c 0x8000
[08] 0x2e23 0x2000 1.2.643.2.2.19 (ГОСТ Р 34.10-2001)
[09] 0x2e49 0x2000 1.2.643.7.1.1.1.1 (ГОСТ Р 34.10-2012 256 бит)
[10] 0x2e3d 0x2000 1.2.643.7.1.1.1.2 (ГОСТ Р 34.10-2012 512 бит)
Cipher strengths: 256..256
Supported protocols: 0xa80:
Transport Layer Security 1.0 client side
Transport Layer Security 1.1 client side
Transport Layer Security 1.2 client side
dwProtocolMask: 0x800e2aaa
**** Error 0xffffffff80090304 returned by InitializeSecurityContext (2)
../../../../CSPbuild/CSP/samples/csptest/WebClient.c:765:Error performing handshake.
Error 0x80090304: The Local Security Authority cannot be contacted
Total: SYS: 0.010 sec USR: 0.010 sec UTC: 3.030 sec
[ErrorCode: 0x80090304]

csptest -tlsc -server bend.ru -port 443 -v -nosave -user 7b9aa5fc636bf036f6b2a36d59b8fcacf4ee37c6

Цитата:

#0:
Subject: E=client@test.com, CN= ТЕСТ, OU=IT, O=IT, L=Moscow, S=Moscow, C=RU
Valid : 26.05.2022 14:37:01 – 26.08.2022 14:47:01 (UTC)
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2

Client certificate:
Subject: E=client@test.com, CN=ТЕСТ, OU=IT, O=IT, L=Moscow, S=Moscow, C=RU
Valid : 26.05.2022 14:37:01 – 26.08.2022 14:47:01 (UTC)
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2

(o) OK
OK
11 algorithms supported:
Aglid Class OID
[00] 0x661e 0x6000 1.2.643.2.2.21 (ГОСТ 28147-89)
[01] 0x6631 0x6000 1.2.643.7.1.1.5.2 (ГОСТ Р 34.12-2015 Кузнечик)
[02] 0x6630 0x6000 1.2.643.7.1.1.5.1 (ГОСТ Р 34.12-2015 Магма)
[03] 0x801e 0x8000 1.2.643.2.2.3 (ГОСТ Р 34.11/34.10-2001)
[04] 0x8021 0x8000 1.2.643.7.1.1.2.2 (ГОСТ Р 34.11-2012 256 бит)
[05] 0x801f 0x8000
[06] 0x803d 0x8000
[07] 0x803c 0x8000
[08] 0x2e23 0x2000 1.2.643.2.2.19 (ГОСТ Р 34.10-2001)
[09] 0x2e49 0x2000 1.2.643.7.1.1.1.1 (ГОСТ Р 34.10-2012 256 бит)
[10] 0x2e3d 0x2000 1.2.643.7.1.1.1.2 (ГОСТ Р 34.10-2012 512 бит)
Cipher strengths: 256..256
Supported protocols: 0xa80:
Transport Layer Security 1.0 client side
Transport Layer Security 1.1 client side
Transport Layer Security 1.2 client side
dwProtocolMask: 0x800e2aaa
Protocol version: 3.3
ClientHello: RecordLayer: TLS, Len: 113
SessionId: (empty)
Cipher Suites: (c1 00) (c1 01) (c1 02) (ff 85) (00 81)
118 bytes of handshake data sent
1460 bytes of handshake data received
1460 bytes of handshake data received
2718 bytes of handshake data received
**** Error 0xffffffff80090304 returned by InitializeSecurityContext (2)
../../../../CSPbuild/CSP/samples/csptest/WebClient.c:765:Error performing handshake.
Error 0x80090304: The Local Security Authority cannot be contacted
Total: SYS: 0.060 sec USR: 0.000 sec UTC: 2.060 sec
[ErrorCode: 0x80090304]

Отредактировано пользователем 1 июля 2022 г. 9:54:57(UTC)
| Причина: Не указана

Настройка проверки формата сертификатов

Сервис Проверки Подписи «КриптоПро 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 плагин находится в директории &lt;Путь установки&gt;\cprodss\Plugins\certverifiers\
и называется SVS.CertificateVerifier.Qualified.dll.

Для регистрации и настройки плагина проверки формата сертификатов используются командлеты
Add-VsCertificateVerifierPlugin, Get-VsCertificateVerifierPlugin,
Remove-VsCertificateVerifierPlugin.

Для настройки проверки того, что сертификаты выданы определенным УЦ, необходимо выполнение следующих действий:

  • зарегистрировать отпечатки корневых сертификатов в КриптоПро SVS. Работа с отпечатками производится при помощи командлетов
    Add-VsQualifiedCAThumbprints, Get-VsQualifiedCAThumbprints
    и Remove-VsQualifiedCAThumbprints. Если отпечатки не заданы, данная проверка сертификатов проводиться не будет.

  • установить корневые сертификаты УЦ в выделенное хранилище КриптоПро SVS. Хранилище создается автоматически при установке
    КриптоПро SVS и имеет название вида &lt;Имя веб-приложения SVS&gt;-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

Как посмотреть информацию о сертификате ключа электронной подписи

Важно! Если при получении сертификата вы установили пароль на контейнер, возможность просмотреть его отсутствует. Рекомендуем:

  1. Вспомнить или подобрать пароль (количество попыток ввода пароля не ограничено);
  2. Переустановить сертификат из копии этого ключевого контейнера без пароля, если она есть;
  3. Если копия отсутствует и пароль Вы не вспомнили, получить новый сертификат.

Просмотреть информацию о сертификате ключа подписи можно:

  1. В «Личном кабинете» в нижней части вкладки «Договор» — «Список сертификатов».
  2. В Internet Explorer в меню «Сервис» — «Свойства обозревателя» — закладка «Содержание» — «Сертификаты». Двойным щелчком мыши откройте нужный сертификат.
  3. В «КриптоПро CSP» (меню «Пуск» – «Панель управления» — «КриптоПро CSP» — «Сервис») нажмите кнопку «Просмотреть сертификаты в контейнере» — «Обзор» — выберите нужный ключевой контейнер (сертификат) – нажмите кнопку «Далее» — откройте сертификат с помощью кнопки «Свойства».

На вкладке «Общие» будет отображена следующая информация:

  • На кого выдан сертификат.
  • Дата генерации сертификата.
  • Срок действия сертификата.
  • Кем сертификат выдан, если сертификат получен в компании «Такском».

На вкладке «Состав» можно посмотреть:

  • серийный номер (вторая строка сверху);
  • отпечаток сертификата (последняя строка);
  • с помощью какого криптопровайдера был выпущен сертификат (поле «Средства электронной подписи»).

Thumbprint сертификата криптопро

Читайте также:  Как сдать отчет через личный кабинет налогоплательщика ИП
Оцените статью
ЭЦП Эксперт
Добавить комментарий

Adblock
detector