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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline FerrariF70  
#1 Оставлено : 29 октября 2020 г. 22:33:55(UTC)
FerrariF70

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

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

Сказал(а) «Спасибо»: 2 раз
Всем доброго времени суток!
Разрабатываю приложения на C# и дошёл до уровня шифрования. Пытаюсь понять расширения сертификата
Для чего они вообще нужны? с одной стороны понятно что они несут дополнительную информацию а с другой стороны не понятно как их использовать?
Заранее спасибо!
Online two_oceans  
#2 Оставлено : 31 октября 2020 г. 7:59:06(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,342
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 90 раз
Поблагодарили: 313 раз в 295 постах
Добрый день.
В основной формат сертификата заложены только обязательные поля которые должны быть абсолютно во всех сертификатах в строго единичном количестве (независимо от их назначения сертификата, использования и т.д.). Состав обязательных полей определяется версией сертификата (первым полем сертификата). Тут допускается только минимальная пластичность, например, у разных криптопровайдеров может быть разное количество подполей оидов в параметрах открытого ключа, но само поле алгоритма открытого ключа или поле параметров открытого ключа или сам открытый ключ или наименование владельца сертификата обязательно указаны в сертификате V3.

Расширения - это "условно необязательная" информация, которая для каких-то сертификатов обязана присутствовать, для каких-то может присутствовать или отсутствовать, для каких-то обязана отсутствовать. Введены только на V2 или V3 сертификатах, впрочем, V3 самая распространенная. Грубо говоря, это весь "неформат с точки зрения стандарта".

Хотя конечно для каждого расширения есть собственное определение формата где-то еще, но это лишь означает, что одним обработчиком не отделаться и для каждого расширения нужен свой обработчик. В большинстве случаев (но не всегда) сертификаты V3 минимально имеют только расширение "Основные ограничения" и "Использование ключа". В общем случае, приложение обязано понимать все расширения с флагом критического расширения, остальные можно игнорировать.

Использовать соответственно тоже не просто: нужно определить размер расширений сертификата и по одному перебрать их смотря не дошли ли до конца размера. Для каждого определить оид, флаги. До этого момента есть автоматизация стандартными функциями, но можно и вручную перебирать. Далее по оиду приложение опознает что за расширение и нужно ли обрабатывать. Если нужно то расширение декодируется - для "стандартных" или "давно введенных" декодирование уже как правило есть в криптопровайдере, но вот для недавно введенных может понадобится свой декодер.

Отредактировано пользователем 31 октября 2020 г. 8:13:51(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил two_oceans за этот пост.
FerrariF70 оставлено 31.10.2020(UTC)
Offline FerrariF70  
#3 Оставлено : 31 октября 2020 г. 22:55:18(UTC)
FerrariF70

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

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

Сказал(а) «Спасибо»: 2 раз
Автор: two_oceans Перейти к цитате
Добрый день.
В основной формат сертификата заложены только обязательные поля которые должны быть абсолютно во всех сертификатах в строго единичном количестве (независимо от их назначения сертификата, использования и т.д.). Состав обязательных полей определяется версией сертификата (первым полем сертификата). Тут допускается только минимальная пластичность, например, у разных криптопровайдеров может быть разное количество подполей оидов в параметрах открытого ключа, но само поле алгоритма открытого ключа или поле параметров открытого ключа или сам открытый ключ или наименование владельца сертификата обязательно указаны в сертификате V3.

Расширения - это "условно необязательная" информация, которая для каких-то сертификатов обязана присутствовать, для каких-то может присутствовать или отсутствовать, для каких-то обязана отсутствовать. Введены только на V2 или V3 сертификатах, впрочем, V3 самая распространенная. Грубо говоря, это весь "неформат с точки зрения стандарта".

Хотя конечно для каждого расширения есть собственное определение формата где-то еще, но это лишь означает, что одним обработчиком не отделаться и для каждого расширения нужен свой обработчик. В большинстве случаев (но не всегда) сертификаты V3 минимально имеют только расширение "Основные ограничения" и "Использование ключа". В общем случае, приложение обязано понимать все расширения с флагом критического расширения, остальные можно игнорировать.

Использовать соответственно тоже не просто: нужно определить размер расширений сертификата и по одному перебрать их смотря не дошли ли до конца размера. Для каждого определить оид, флаги. До этого момента есть автоматизация стандартными функциями, но можно и вручную перебирать. Далее по оиду приложение опознает что за расширение и нужно ли обрабатывать. Если нужно то расширение декодируется - для "стандартных" или "давно введенных" декодирование уже как правило есть в криптопровайдере, но вот для недавно введенных может понадобится свой декодер.


Ещё бы хорошо было, пример на C#.
Online two_oceans  
#4 Оставлено : 1 ноября 2020 г. 9:51:41(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,342
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 90 раз
Поблагодарили: 313 раз в 295 постах
Добрый день.
Не особенно специализируюсь на .Net, но полагаю, можно начать с объекта X509Certificate2, у него есть свойство Extensions представляющее коллекцию расширений, их можно перечислить, а для нескольких реализованных в .Net даже получить немного больше информации:
X509Certificate2
пример перечисления расширений

Другой вариант: работать с CryptoApi через p/invoke - это может быть нужно для раскодирования расширений не реализованных в .Net
смешанный пример создания сертификата на PowerShell+.Net+p/invoke
thanks 1 пользователь поблагодарил two_oceans за этот пост.
FerrariF70 оставлено 03.11.2020(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.