Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline b3ssmile  
#1 Оставлено : 17 сентября 2025 г. 16:01:38(UTC)
b3ssmile

Статус: Новичок

Группы: Участники
Зарегистрирован: 17.09.2025(UTC)
Сообщений: 6

Я создаю приложение, в котором происходит подписание документа с помощью ЭП. Насколько я понял, любой сертификат, выдаваемый людям (который при подписании будет удовлетворять ФЗ), для подписания документов так или иначе должен быть верифицирован Минцифры (цепочка сертификатов должна начинаться с сертификата Минцифры). Так вот, как происходит процесс проверки верифицированности сертификата Минцифры: нужно ли покупать услугу, требуется ли стороннее ПО, есть ли какие-то API для этого или это можно реализовать самостоятельно? Я видел информацию о том, что можно получить открытый ключ сертификата УЦ. Правда ли это?
Offline Андрей *  
#2 Оставлено : 17 сентября 2025 г. 17:19:20(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,918
Мужчина
Российская Федерация

Сказал «Спасибо»: 598 раз
Поблагодарили: 2335 раз в 1832 постах
Здравствуйте.

Правда, конечно, именно так и происходит проверка - подпись в сертификате проверяется с использованием открытого ключа УЦ.

Уточнить не помешало бы, какой язык разработки.

Если веб - то через плагин

+ там есть ссылка на примеры.

+ https://docs.cryptopro.ru/

+ https://cpdn.cryptopro.ru/
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 17 сентября 2025 г. 17:22:00(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,918
Мужчина
Российская Федерация

Сказал «Спасибо»: 598 раз
Поблагодарили: 2335 раз в 1832 постах
Техническую поддержку оказываем тут
Наша база знаний
Offline b3ssmile  
#4 Оставлено : 17 сентября 2025 г. 17:42:57(UTC)
b3ssmile

Статус: Новичок

Группы: Участники
Зарегистрирован: 17.09.2025(UTC)
Сообщений: 6

Автор: Андрей * Перейти к цитате
Здравствуйте.

Правда, конечно, именно так и происходит проверка - подпись в сертификате проверяется с использованием открытого ключа УЦ.

Уточнить не помешало бы, какой язык разработки.

Если веб - то через плагин

+ там есть ссылка на примеры.

+ https://docs.cryptopro.ru/

+ https://cpdn.cryptopro.ru/


Здравствуйте. Приложение разрабатывается со стороны фронта на ts/js, со стороны бэка на python.


Я сделал тестовыую подпись с тестовым сертификатом здесь (ссылку, которую вы скинули), далее произвел проверку на сайте госуслуг и получил следующий результат:
checkingResGosuslug.jpg (110kb) загружен 3 раз(а).

Меня интересует момент проверки Статуса сертификата ЭП, в моем приложение нужно также делать провеку статуса и я должен узнать правда ли сертифицирован он. Как именно это производится? В документации я видел проверку цепочки сертификатов приложением КриптоПро, цепочка будет верной, если в приложение добавить сертификат в доверенные. Я хочу сделать проверку независимо от того, установлен ли у клиента статус доверенный у сертификата. То есть вместо того, чтобы ручками закидывать файл на госуслуги и там проверять статус подписи, я хочу проверять автоматизированно, для этого мне надо проверить статус реальной верификации сертификата. Соответственно мне нужна эта логика на бэке и если возможно на фронте

Отредактировано пользователем 17 сентября 2025 г. 17:43:36(UTC)  | Причина: Не указана

Offline Андрей *  
#5 Оставлено : 17 сентября 2025 г. 17:50:50(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,918
Мужчина
Российская Федерация

Сказал «Спасибо»: 598 раз
Поблагодарили: 2335 раз в 1832 постах
и проверка на квалифицированность может?
Техническую поддержку оказываем тут
Наша база знаний
Offline b3ssmile  
#6 Оставлено : 17 сентября 2025 г. 17:56:28(UTC)
b3ssmile

Статус: Новичок

Группы: Участники
Зарегистрирован: 17.09.2025(UTC)
Сообщений: 6

Автор: Андрей * Перейти к цитате
и проверка на квалифицированность может?


Да, прошу прощение, конце рабочего дня, немного препутал. Мне надо проверить квалифицированность сертификата пользователя.
Offline b3ssmile  
#7 Оставлено : 18 сентября 2025 г. 9:19:34(UTC)
b3ssmile

Статус: Новичок

Группы: Участники
Зарегистрирован: 17.09.2025(UTC)
Сообщений: 6

На сколько я понял процесс интергации плагина в веб приложение выглядит так:

Пользователь со своего устройства производит подписание документа через расширение для js ->
Далее данные подписи отправляются на сервер (backend) ->
Backend в свою очередь через расширение для python делает проверку серитификата ->
Пользователь получает результат проверки
Offline Андрей *  
#8 Оставлено : 18 сентября 2025 г. 13:04:17(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,918
Мужчина
Российская Федерация

Сказал «Спасибо»: 598 раз
Поблагодарили: 2335 раз в 1832 постах
Автор: b3ssmile Перейти к цитате
На сколько я понял процесс интергации плагина в веб приложение выглядит так:

Пользователь со своего устройства производит подписание документа через расширение для js ->
Далее данные подписи отправляются на сервер (backend) ->
Backend в свою очередь через расширение для python делает проверку серитификата ->
Пользователь получает результат проверки


Да, обычно так и делается.
И на сервере проверять на квалифицированность.

Сертификаты АУЦ публикуются в xml-реестре (TSL).

Там есть сертификаты, статусы аккредитации и реквизиты..
В сертификате пользователя есть идентификатор ключа ЦС = идентификатор ключа в сертификате УЦ и так до корневого.
Это если вручную-программно проверять "кто выдал и есть ли он в реестре".
Техническую поддержку оказываем тут
Наша база знаний
Offline b3ssmile  
#9 Оставлено : 18 сентября 2025 г. 17:03:02(UTC)
b3ssmile

Статус: Новичок

Группы: Участники
Зарегистрирован: 17.09.2025(UTC)
Сообщений: 6

Автор: Андрей * Перейти к цитате
Автор: b3ssmile Перейти к цитате
На сколько я понял процесс интергации плагина в веб приложение выглядит так:

Пользователь со своего устройства производит подписание документа через расширение для js ->
Далее данные подписи отправляются на сервер (backend) ->
Backend в свою очередь через расширение для python делает проверку серитификата ->
Пользователь получает результат проверки


Да, обычно так и делается.
И на сервере проверять на квалифицированность.

Сертификаты АУЦ публикуются в xml-реестре (TSL).

Там есть сертификаты, статусы аккредитации и реквизиты..
В сертификате пользователя есть идентификатор ключа ЦС = идентификатор ключа в сертификате УЦ и так до корневого.
Это если вручную-программно проверять "кто выдал и есть ли он в реестре".



С идентификатором ключа из xml-реестра понятно. А как получить идентификатор ключа из сертификата пользователя, там единственное поле про издателя сертификата это его имя (IssuerName)?
Offline Андрей *  
#10 Оставлено : 18 сентября 2025 г. 23:09:02(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 13,918
Мужчина
Российская Федерация

Сказал «Спасибо»: 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) загружен 1 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.