Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Проверка верифицированности подписи
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.09.2025(UTC) Сообщений: 5
|
Я создаю приложение, в котором происходит подписание документа с помощью ЭП. Насколько я понял, любой сертификат, выдаваемый людям (который при подписании будет удовлетворять ФЗ), для подписания документов так или иначе должен быть верифицирован Минцифры (цепочка сертификатов должна начинаться с сертификата Минцифры). Так вот, как происходит процесс проверки верифицированности сертификата Минцифры: нужно ли покупать услугу, требуется ли стороннее ПО, есть ли какие-то API для этого или это можно реализовать самостоятельно? Я видел информацию о том, что можно получить открытый ключ сертификата УЦ. Правда ли это?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,917   Сказал «Спасибо»: 598 раз Поблагодарили: 2335 раз в 1832 постах
|
Здравствуйте. Правда, конечно, именно так и происходит проверка - подпись в сертификате проверяется с использованием открытого ключа УЦ. Уточнить не помешало бы, какой язык разработки. Если веб - то через плагин + там есть ссылка на примеры. + https://docs.cryptopro.ru/+ https://cpdn.cryptopro.ru/ |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,917   Сказал «Спасибо»: 598 раз Поблагодарили: 2335 раз в 1832 постах
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.09.2025(UTC) Сообщений: 5
|
Автор: Андрей *  Здравствуйте. Правда, конечно, именно так и происходит проверка - подпись в сертификате проверяется с использованием открытого ключа УЦ. Уточнить не помешало бы, какой язык разработки. Если веб - то через плагин + там есть ссылка на примеры. + https://docs.cryptopro.ru/+ https://cpdn.cryptopro.ru/ Здравствуйте. Приложение разрабатывается со стороны фронта на ts/js, со стороны бэка на python. Я сделал тестовыую подпись с тестовым сертификатом здесь (ссылку, которую вы скинули), далее произвел проверку на сайте госуслуг и получил следующий результат:  checkingResGosuslug.jpg (110kb) загружен 3 раз(а).Меня интересует момент проверки Статуса сертификата ЭП, в моем приложение нужно также делать провеку статуса и я должен узнать правда ли сертифицирован он. Как именно это производится? В документации я видел проверку цепочки сертификатов приложением КриптоПро, цепочка будет верной, если в приложение добавить сертификат в доверенные. Я хочу сделать проверку независимо от того, установлен ли у клиента статус доверенный у сертификата. То есть вместо того, чтобы ручками закидывать файл на госуслуги и там проверять статус подписи, я хочу проверять автоматизированно, для этого мне надо проверить статус реальной верификации сертификата. Соответственно мне нужна эта логика на бэке и если возможно на фронте Отредактировано пользователем 17 сентября 2025 г. 17:43:36(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,917   Сказал «Спасибо»: 598 раз Поблагодарили: 2335 раз в 1832 постах
|
и проверка на квалифицированность может?
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.09.2025(UTC) Сообщений: 5
|
Автор: Андрей *  и проверка на квалифицированность может?
Да, прошу прощение, конце рабочего дня, немного препутал. Мне надо проверить квалифицированность сертификата пользователя.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.09.2025(UTC) Сообщений: 5
|
На сколько я понял процесс интергации плагина в веб приложение выглядит так:
Пользователь со своего устройства производит подписание документа через расширение для js -> Далее данные подписи отправляются на сервер (backend) -> Backend в свою очередь через расширение для python делает проверку серитификата -> Пользователь получает результат проверки
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,917   Сказал «Спасибо»: 598 раз Поблагодарили: 2335 раз в 1832 постах
|
Автор: b3ssmile  На сколько я понял процесс интергации плагина в веб приложение выглядит так:
Пользователь со своего устройства производит подписание документа через расширение для js -> Далее данные подписи отправляются на сервер (backend) -> Backend в свою очередь через расширение для python делает проверку серитификата -> Пользователь получает результат проверки Да, обычно так и делается. И на сервере проверять на квалифицированность. Сертификаты АУЦ публикуются в xml-реестре ( TSL). Там есть сертификаты, статусы аккредитации и реквизиты.. В сертификате пользователя есть идентификатор ключа ЦС = идентификатор ключа в сертификате УЦ и так до корневого. Это если вручную-программно проверять "кто выдал и есть ли он в реестре". |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.09.2025(UTC) Сообщений: 5
|
Автор: Андрей *  Автор: b3ssmile  На сколько я понял процесс интергации плагина в веб приложение выглядит так:
Пользователь со своего устройства производит подписание документа через расширение для js -> Далее данные подписи отправляются на сервер (backend) -> Backend в свою очередь через расширение для python делает проверку серитификата -> Пользователь получает результат проверки Да, обычно так и делается. И на сервере проверять на квалифицированность. Сертификаты АУЦ публикуются в xml-реестре ( TSL). Там есть сертификаты, статусы аккредитации и реквизиты.. В сертификате пользователя есть идентификатор ключа ЦС = идентификатор ключа в сертификате УЦ и так до корневого. Это если вручную-программно проверять "кто выдал и есть ли он в реестре". С идентификатором ключа из xml-реестра понятно. А как получить идентификатор ключа из сертификата пользователя, там единственное поле про издателя сертификата это его имя (IssuerName)?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,917   Сказал «Спасибо»: 598 раз Поблагодарили: 2335 раз в 1832 постах
|
Средствами языка разработки можно прочитать информацию. Код:
from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.x509.oid import ExtensionOID
# Загрузка сертификата из файла PEM
#with open("certificate.pem", "rb") as cert_file:
# pem_data = cert_file.read()
# cert = x509.load_pem_x509_certificate(pem_data, default_backend())
# для DER формата:
with open("certificate.der", "rb") as cert_file:
der_data = cert_file.read()
cert = x509.load_der_x509_certificate(der_data, default_backend())
# Проверка наличия расширения Authority Key Identifier
try:
akid_extension = cert.extensions.get_extension_for_oid(ExtensionOID.AUTHORITY_KEY_IDENTIFIER)
akid_value = akid_extension.value
# Извлечение key_identifier (обычно это байты в hex формате)
key_identifier = akid_value.key_identifier
print("Authority Key Identifier (key_identifier):", key_identifier.hex())
# Дополнительно: можно извлечь authority_cert_issuer и authority_cert_serial_number
if akid_value.authority_cert_issuer:
print("Authority Cert Issuer:", akid_value.authority_cert_issuer)
except x509.ExtensionNotFound:
print("Расширение Authority Key Identifier отсутствует в сертификате.")
python3 ./read.py Цитата: Authority Key Identifier (key_identifier): c91358b14ca7623a7ed23f3ca6e7147c9d70a386 Authority Cert Issuer: [<DirectoryName(value=<Name(1.2.840.113549.1.9.1=dit@digital.gov.ru,C=RU,ST=77 Москва,L=г. Москва,STREET=Пресненская набережная\, дом 10\, строение 2,O=Минцифры России,1.2.643.100.1=1047702026701,1.2.643.100.4=7710474375,CN=Минцифры России)>)>]
 Snimok ehkrana ot 2025-09-19 00-06-02.png (28kb) загружен 0 раз(а). |
|
|
|
|
Форум КриптоПро
»
Общие вопросы
»
Общие вопросы
»
Проверка верифицированности подписи
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close