Разбираем x.509 сертификат / Хабр

Что такое электронная подпись

Элек­трон­ная под­пись — это тех­но­ло­гия, кото­рая помо­га­ет под­твер­дить под­лин­ность элек­трон­но­го доку­мен­та: дого­во­ра, справ­ки, выпис­ки или чего-то ещё. 

Если упро­щён­но, рабо­та­ет так: 

👉 Есть некий доку­мент, под­пи­сан­ный ЭП

👉 С помо­щью спе­ци­аль­ной про­грам­мы мож­но про­ве­рить под­лин­ность этой под­пи­си и документа

✅ Если про­грам­ма гово­рит, что всё окей, то мы можем быть уве­ре­ны: доку­мент под­пи­сал имен­но тот, кто в нём ука­зан; и с момен­та под­пи­са­ния в доку­мен­те ниче­го не изменилось. 

❌ Или про­грам­ма может ска­зать, что под­пись не сов­па­ла. Это зна­чит, что либо доку­мент под­пи­сал дру­гой чело­век, либо после под­пи­са­ния кто-то изме­нил этот доку­мент (напри­мер, допи­сал ноль в сто­и­мость кон­трак­та). Так мы пой­мём, что это­му доку­мен­ту нель­зя доверять.

Элек­трон­ная под­пись нуж­на, что­бы защи­щать дого­во­ры, выда­вать офи­ци­аль­ные справ­ки, заклю­чать сдел­ки и участ­во­вать в тор­гах по госзакупкам. 

Что делать если вы забыли пароль для доступа к сертификату ключа проверки электронной подписи

Не огорчайтесь. Ничего страшного в этом нет. Это же не пароль от личного кабинета налогоплательщика, в случае утраты которого, придётся повторно посещать ИФНС. Это в том случае, если Вы не потрудились задать кодовое слово для его восстановления по электронной почте.

Здесь всё гораздо проще. Обратите внимание на нижнее окно там есть ссылка «Отозвать текущий сертификат». Смело щёлкайте по ней и после этого создавайте новый сертификат и у Вас будет новый пароль:

Если Вы всё-таки опасаетесь сразу это делать, можете для убедительности сначала щёлкнуть на «Просмотреть сертификат»:

Перед вами откроется следующее окно, которое, надеюсь развеет Ваши сомнения:

На этом можно и закончить. И помните, что электронная подпись открывает перед Вами массу возможностей  как в экономии своего времени, так и в плане экономии средств. Я уже не говорю о том, что это уже более прогрессивная ступень ведения Ваших дел. И не огорчайтесь, если Вы утеряли пароль к сертификату ЭП, его всегда можно восстановить.

Удачи Вам ! И до скорых встреч на страницах блога «ПенсерМен».

Из чего состоит сертификат электронной подписи

Сертификат электронной подписи подтверждает принадлежность электронной подписи владельцу и содержит: -закрытый ключ — для генерации электронных подписей; -открытый ключ — для проверки подлинности подписи получателем; -сведения о владельце — для проверки получателем информации об авторе документа.

Для того чтобы начать пользоваться электронной подписью (сдавать отчетность, участвовать в электронных торгах, подписывать, зашифровывать и расшифровывать документы), необходимо получить сертификат электронной подписи в одном из удостоверяющих центров.

Функция удостоверяющего центра в этом случае заключается в том, чтобы подтвердить подлинность сведений о владельце и выдать сертификат нужного пользователю тарифного плана. Сертификат электронной подписи подтверждает принадлежность электронной подписи владельцу и содержит:

  • закрытый ключ — для генерации электронных подписей;
  • открытый ключ — для проверки подлинности подписи получателем;
  • сведения о владельце — для проверки получателем информации об авторе документа.

Для соблюдения правил информационной безопасности срок действия сертификата ограничен. Сертификат выдается владельцу на год, по истечении которого его необходимо продлевать.

Кроме того, при угрозе компрометации закрытого ключа (например, если владелец потерял или оставил без присмотра  ключевой носитель), при утере пароля или смене реквизитов сертификат отзывается и взамен выдается новый.  

Удостоверяющий центр СКБ Контур — единственный в России центр, который выдает сертификаты электронной подписи на 15 месяцев.  А заказав услугу «Сопровождение сертификата», владелец может бесплатно перевыпускать сертификат в течение срока его действия в случае компрометации или смены требований электронной площадки к виду электронной подписи.

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

Допустим, вы получили квалифицированный сертификат ЭП и хотите начать им пользоваться. Что для этого нужно?

  • Прежде чем подписать документ ЭП, убедитесь в его окончательной версии. После того, как будет создана ЭП, внести в него изменения не получится.
  • Позаботьтесь о наличии средств ЭП (в УЦ Контура настройка компьютера для работы с ЭП проходит автоматически) и программ для создания ЭП.

Для подписания ЭП документов формата Word и Excel есть несколько возможностей. Способ подписания зависит от применяемого ПО. Поэтому разумно перед тем как окончательно определиться с выбором, обсудить требования к подписи у контрагента.  

В зависимости от ПО есть несколько видов подписей: 

Вид ЭПКлючевая особенность
ОткрепленнаяФайл подписи формируется отдельно от подписываемого файла
СовмещеннаяСоздается файл, в котором содержится и ЭП, и исходный документ
ВстроеннаяПодписание происходит внутри документов Word, Excel, PDF с помощью ПО
В OutlookПодписание в Outlook возможно только в почтовом клиенте Microsoft Outlook

Для создания совмещенной подписи потребуется программа КриптоАРМ. Установив ее, можно подписывать документы любого формата: rar,.jpeg,.png,.ppt, видео и т.д. Есть бесплатная базовая версия КриптоАРМ Старт, стоимость остальных версий зависит от функциональности.

Для создания встроенной ЭП потребуются плагины:

Подписывать документы в Outlook можно только в почтовом клиенте Microsoft Outlook. При этом важно, чтобы почта в учетной записи MS Outlook совпадала с почтой, указанной в сертификате.

Для открепленной подписи подойдут как КриптоАРМ, так и бесплатный веб-сервис Контур.Крипто. 

Контур.Крипто не нужно устанавливать, достаточно просто иметь доступ в интернет. Он работает с подписью, выпущенной любым УЦ, помогает создать и проверить ЭП, зашифровать и расшифровать электронный файл, а также подписать пакет файлов или архивов, поставить подпись двум и более лицам.

При этом в сервисе есть ограничение на вес документа — до 100 Мб, и он работает только в Microsoft Windows. Кроме того, сервис позволяет создать только открепленную подпись. Проверить подпись, созданную в Контур.Крипто, можно в любой программе, которая работает с открепленными ЭП.

Как получить сертификат открытого ключа

Сертификат необходим для работы с ЭП. Предварительно пользователю следует получить ЭП. Для этого можно обратиться в один из аккредитованных удостоверяющих центров. Клиенту потребуется выполнить 4 действия для получения ЭП:

  1. Подать заявку на получение ЭП. Обычно ее можно оформить на сайте выбранного удостоверяющего центра (УЦ). При возникновении вопросов можно воспользоваться помощью сотрудников УЦ по телефону или email.
  2. Прикрепить необходимые документы. Частным лицам для получения усиленной подписи обычно достаточно СНИЛС и паспорта. Но в некоторых случаях могут понадобиться дополнительные документы, например, ИНН.
  3. Оплатить выпуск ЭП и при необходимости защищенный носитель информации. Каждый УЦ самостоятельно определяет стоимость услуг. Предложений на рынке довольно много, и пользователь может подбирать оптимальный для себя вариант по цене.
  4. Получить ЭП. Она изготавливается обычно в течение 1 дня после поступления оплаты в УЦ. О готовности ЭП клиента информируют по телефону. При получении ЭП понадобится предъявить паспорт и при необходимости доверенность или другие документы. Некоторые УЦ осуществляют доставку ЭП. Это может быть удобно, если нет времени на визит в офис центра.

Как приобрести подпись физическому лицу

Физическим лицам проще всего получить подпись в ближайшем МФЦ: рядом может не быть удостоверяющих центров, а МФЦ найдется всегда. Для этого надо записаться на прием и подготовить следующие документы:

  1. Заявление на изготовление квалифицированного сертификата — шаблон дадут в МФЦ.
  2. Паспорт.
  3. СНИЛС.
  4. Свидетельство о присвоении ИНН.

В Москве электронная подпись для граждан стоит 900—950 рублей. Вместе с носителем цена составит 1500—1600 Р. Отдельно носитель будет стоить от 1500 рублей. Эта цена отличается в зависимости от тарифа удостоверяющего центра и того, насколько защищенную подпись вы хотите использовать.

Как проверить подлинность подписи

Чтобы проверить подлинность подписи и неизменность документа, воспользуйтесь любым из бесплатных сервисов:

  1. Портал «Криптопро».
  2. Сайт госуслуг.
  3. Сервис «Контур-крипто».
На сайте «Криптопро» укажите путь к подписанному документу и подписи в специальном окне, и программа выдаст результат

Как работает: алгоритмы шифрования

Допу­стим, вы уже схо­ди­ли в удо­сто­ве­ря­ю­щий центр и полу­чи­ли на флеш­ке сер­ти­фи­кат и ключ элек­трон­ной под­пи­си. Теперь нуж­но ска­чать спе­ци­аль­ный софт, кото­рый и будет под­пи­сы­вать ваши доку­мен­ты и про­ве­рять чужие на подлинность.

Про­бле­ма в том, что ЭП осно­ва­на на алго­рит­мах асим­мет­рич­но­го шиф­ро­ва­ния, а их мно­го: раз­ло­же­ние на про­стые мно­жи­те­ли, дис­крет­ное лога­риф­ми­ро­ва­ние, эллип­ти­че­ские кри­вые и мно­же­ство дру­гих. Ключ из одно­го алго­рит­ма не подой­дёт для исполь­зо­ва­ния в дру­гом, поэто­му в Рос­сии дого­во­ри­лись исполь­зо­вать стан­дарт шиф­ро­ва­ния ГОСТ Р 34.

Это зна­чит, что нам нужен спе­ци­аль­ный софт, в кото­ром уже есть этот алго­ритм. Чаще все­го исполь­зу­ют Крип­то­П­РО, реже — ViPNet CSP. С помо­щью этих про­грамм мож­но под­пи­сать доку­мен­ты и про­ве­рить сер­ти­фи­ка­ты на подлинность.

Как создать электронную подпись в личном кабинете налогоплательщика

Если у Вас уже была электронная подпись в старой версии личного кабинета, то в новой (с 2021 года) её уже не будет и пароля естественно тоже. Так что сертификат ЭП придётся создавать заново.

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

  1. выбираете вкладку «Получить ЭП»;
  2. вариант хранения электронной подписи;
  3. устанавливаете пароль для доступа к сертификату;
  4. вводите его ещё раз;
  5. жмёте кнопку «Отправить запрос»:

Почему лучше выбрать хранение ключа в системе ФНС России, думаю у Вас вопросов не вызовет. Если Вы прочитали разъяснения, то заметили и сами неоспоримые преимущества именно этого варианта.

После отправки запроса появляется окно ожидания с крутящимся кружочком. Иногда оно может задержаться на довольно таки продолжительное время:

Потом появиться окно, сообщающее о том, что сертификат успешно выпущен. Здесь можно будет вызвать окно со своим сертификатом, нажав на ссылку «Просмотреть сертификат»:

во всплывшем после этого окне ввести пароль, который Вы уже вводили дважды в самом начале и кнопка «Далее»:

А уже в следующем окне любуйтесь своим сертификатом, смотрите эти самые реквизиты, которые сверяют в налоговой при получении от Вас документов. Выглядит он примерно так:

Как узнать пароль сертификата электронной подписи

В данной ситуации может возникнуть две ситуации — сертификат не был установлен на компьютер и нужно узнать пароль от рутокена либо сертификат был установлен и на него был поставлен пароль.

В первом случае, если пароль не менялся, нужно попробовать стандартный пароль — 12345678. Если же была произведена смена пароля, то восстановить его уже никак не получится.

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

Читайте также:  Ключ электронной подписи: что это и как получить

Если при установке сертификата с систему был установлен пароль, который в дальнейшем был потерян, необходимо выполнить следующие действия:

  1. На компьютере должна быть установлена «Крипто Про» версии не ниже 3.6. Необходимо перейти в каталог с программой, который находится в папке «Program Files».
  2. В папке найти файл-программу с именем «csptest» и запустить его.
  3. В открывшемся окне с клавиатуры ввести команду cd «C:/Program Files/Crypto ProCSP» соблюдая регистр и все знаки.
  4. На следующем шаге ввести команду csptest -keyset -enum_cont -fqcn –verifycontext Она выведет все контейнеры, которые установлены на компьютер. Необходимо найти требуемый и записать его имя в точности с учетом регистра.
  5. Ввести в окно команду csptest -passwd -showsaved -container «имя». Где «имя» – это записанное на предыдущем шаге имя контейнера. В ответ будет выведена сервисная информация, в том числе и пароль.

Какие сведения содержит

В состав сертификата входят 2 вида ключа:

  1. Открытый, включает:
    • наименование средства ЭП (аппаратного, программного шифровального устройства, например криптопровайдера);
    • официальное название УЦ;
    • дату выдачи и период функционирования;
    • область применения ЭП и ее ограничения;
    • наименование и локацию (для организации), полное имя и СНИЛС (для частного лица), ИНН;
    • дополнительные данные об издателе, владельце, области применения, адресе службы штампов времени и др.
  2. Закрытый. Создан для производства цифровых подписей.

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

Целесообразно содержать его на компьютерной технике с использованием средств криптографической защиты информации, например EToken, JaCarta, Rutoken. Вход в систему возможен только по PIN-коду.

Рекомендуется придумать свой вариант, сразу заменив им стандартный. Если неверный код введен более 3 раз, доступ будет заблокирован. Вся работа с объектом выполняется в памяти хранилища, поэтому копирование закрытого ключа из компьютера с последующим использованием становится невозможным.

Квалифицированный сертификат проверки подписи

Квалифицированный сертификат может быть только у усиленной квалифицированной подписи. Она выдается исключительно УЦ, прошедшими аккредитацию в госорганах. В настоящее время занимается ее проведением Минкомсвязи. Список аккредитованных УЦ можно найти на официальном сайте министерства.Центры выдачи

Информация о каждой квалифицированной ЭП вносится в реестр. Она имеет полную юридическую значимость. Все документы, подписанные с помощью нее, будут полностью равны по значимости документам на бумажных носителях с собственноручной подписью.

Для создания квалифицированной ЭП используется специализированное криптографическое программное обеспечение. Она подтверждает отсутствие изменений в документе, а также подпись пользователя. Ограничений на применение квалифицированной ЭП в законодательстве нет. Она может использоваться в любых документах, в т. ч. содержащих гостайну.

Существует также еще 2 вида ЭП – усиленная неквалифицированная и простая. Усиленная неквалифицированная подпись выдается УЦ, которые необязательно должны иметь аккредитацию Минкомсвязи. По данному виду подписи можно однозначно определить подписанта и отсутствие изменений в документе.

Простая ЭП – наиболее упрощенный вариант подписи. Она позволяет только идентифицировать пользователя, совершившего определенные действия, например, при покупке товара в онлайн-магазине. Использовать в документообороте простую ЭП можно, но только при наличии соответствующей договоренности между сторонами.

Подробнее о видах ЭП

Кто и как может получить кэп бесплатно

В мае 2021 года ФНС выпустила подробные разъяснения по вопросу получения бесплатной КЭП. Ведомство предупредило, что с 1 января 2022 года оно начнет выпускать такую подпись для юрлиц (гендиректоров, которые действуют от лица компании без доверенности), ИП и нотариусов.

Срок действия КЭП, которые были выпущены коммерческими УЦ, ограничен 1 января 2022 года. Этим УЦ нужно будет успеть до 1 июля 2021 года переаккредитоваться.

«Чтобы обеспечить «бесшовный» переход от платной к соответствующей безвозмездной государственной услуге по выпуску электронной подписи с 1 июля получить квалифицированную электронную подпись можно будет в Удостоверяющем центре ФНС России», — предупреждает ФНС.

УЦ ФНС выдаст квалифицированные сертификаты бесплатно только для юрлиц, ИП и нотариусов. Квалифицированный сертификат физлица, а также лица, планирующего действовать от имени юрлица по доверенности, можно получить в коммерческих аккредитованных УЦ. С 1 января 2022 года услуга будет доступна только в тех УЦ, которые прошли переаккредитацию.

С 1 июля 2021 года лица, имеющие право действовать без доверенности от имени организации, и ИП смогут подать заявление на выпуск КЭП через «Личный кабинет налогоплательщика — физлица».

Механизм отправки документов подписанных усиленной электронной подписью

Правильнее было бы использовать слово алгоритм вместо механизм. Но не буду пугать основную часть нашей аудитории — пенсерменов «заумными» словами. И далее не пугайтесь, всё разъясню. Итак, как же, например, товарищ Иванов передаёт Налоговой через интернет подписанные документы? Да ещё чтоб их никто не смог прочитать и подменить. Научным языком примерно так:

Вначале Иванов и Налоговая генерируют открытые и закрытые ключи шифрования. Затем обмениваются открытыми между собой. На следующем этапе:

  1. Иванов шифрует «послание» своим закрытым ключом и как результат происходит его подписывание.
  2. Далее Иванов шифрует открытым ключом, который перед этим ему отправила Налоговая то, что получилось после выполнения пункта 1. Теперь никто посторонний не сможет ничего прочитать, если даже перехватит.
  3. После того как Налоговая получила «послание» Иванова, она сначала  расшифровывает его своим закрытым ключом и видит там  зашифрованный документ Иванова.
  4. Тут-то «Налоговая» расшифровывает его с помощью открытого ключа переданного ей Ивановым в самом начале. В результате чего происходит сверка подписи Иванова.

А на «рабоче-крестьянском» языке «явок и паролей» это будет приблизительно похоже на такое мероприятие:

Сначала Иванов готовит чемодан с запасным ключом и бумагу с собственноручно подписанными реквизитами, а Налоговая шкатулку тоже с запасным ключом.  Идут на почту и отправляют друг другу посылки. Иванов укладывает в бандероль ключик от чемодана, а в ценное письмо бумагу со своими реквизитами и отправляет по отдельности. Налоговая — шкатулку посылкой и бандероль с одним ключиком тоже отдельно.

Иванов, получив посылку и бандероль прячет, например, свою подписанный документ в шкатулку и закрывает её ключом из полученной бандероли. Укладывает эту секретную шкатулку в свой чемодан и тоже закрывает уже на свой ключ. А потом посылкой отправляет эту «матрёшку» в Налоговую. Ключи от шкатулки и чемодана оставляет у себя.

Налоговая получает посылку и бандероль. Все ключики у неё уже имеются и если они подходят, она открывает ими и чемодан и шкатулку. Смотрит и сверяет подпись и реквизиты, указанные в документе с теми , что пришли ценной бандеролью ранее. Если всё совпадает и никаких исправлений и подозрений нет, то принимает их в работу.

Эту «белеберду» я написал для того, чтобы было понятно — усиленная электронная подпись это очень серьёзная штука с высочайшем уровнем защиты. И тот пароль, который Вы вводите для отправки электронного документа, это не просто пароль, как например для входа в «Одноклассники», а можно сказать, очень сложный механизм для запуска всех этих процессов шифрования, обмена данными, дешифрования, сверки данных.

Я уже не буду вдаваться в подробности о терминах. Например, что значит сертификат ключа проверки электронной подписи. Почему так, а не просто подпись. Хватит, и так столько ахинеи нанёс, что у самого голова пухнет. Ближе к теме.

Правила действия

При отсутствии иного условия СКПЭП функционирует со дня выдачи.

УЦ вносит сведения о нем в соответствующий реестр не позднее даты начала действия, предусмотренной в документе.

Сертификат перестает функционировать в следующих случаях:

  • пл завершении работы УЦ без делегирования функций иному представителю;
  • по истечении периода своего действия;
  • после подачи обладателем соответствующего цифрового либо бумажного заявления;
  • в иных обстоятельствах, предусмотренных законом, нормативным актом либо договором между УЦ и пользователем ключа.

УЦ вправе аннулировать СКПЭП на основании таких фактов:

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

Информация о прекращении действия СКПЭП должна быть внесена УЦ в соответствующий реестр в течение 12 часов с момента наступления правовых оснований либо его осведомленности об их возникновении. После фиксирования записи в ведомости ключ утрачивает силу.

Применение аннулированного документа влечет только связанные с этим последствия.

УЦ должен сообщить клиенту о процедуре отмены до занесения отметки в ведомость.

Роль аккредитованного удостоверяющего центра

Как уже было сказано выше, сертификат ключа проверки ЭП выдает УЦ в электронном или бумажном виде. УЦ, подтвердивший соответствие требованиям закона в Минкомсвязи, становится аккредитованным УЦ и получает право выдавать квалифицированные сертификаты.

При выдаче квалифицированного сертификата аккредитованный УЦ должен не только установить личность обратившегося лица, но и внести в специальную базу данных (реестр сертификатов) серию, номер и дату выдачи документа, использовавшегося для установления личности.

Аккредитованный УЦ должен регулярно публиковать специальную выписку из реестра сертификатов, содержащую номера квалифицированных сертификатов, которые прекратили действие по решению суда или по обращению владельца сертификата.

Подробно об обязанностях и функционале аккредитованного УЦ говорится в ст. 15 Федерального закона от 06.04.2021 № 63-ФЗ.Чтобы получить ЭП, для начала нужно определить, какой сертификат ЭП вам нужен для работы, с какой целью вы будете его использовать.

Подготовить необходимые документы перед визитом в центр выдачи можно с помощью мастера подбора документов.

Для получения сертификата придется лично прийти в центр выдачи с оригиналами документов или их заверенными копиями, оплаченным счетом или копией платежного поручения, заверенной банком.

Способы добавления новой эцп

Для добавления новой ЭЦП с помощью программы «КриптоПро» рекомендуется использовать способ установки через контейнер. Для этого нужно выйти из меню «Пуск» в панель управления, найти и открыть соответствующую утилиту. Во вкладке «Сервис» активировать опцию просмотра. Порядок дальнейших действий:

  • кликнуть на «Обзор», нажав «Ок», подтвердить согласие после выбора из предлагаемого списка нужного контейнера;
  • в новом окне нажать «Далее» и запустить функцию установки;
  • согласиться с условиями, описанными в предложении системы.
Читайте также:  КриптоПро | О компании

Установить выбранный сертификат в последних версиях программного обеспечения можно кликом на одноименную кнопку в разделе «Общие». Место хранения загруженных ключей – папка «Личное». Альтернатива автоматическому выбору хранилища – ручной ввод адреса сертификационного файла ЭЦП.

При правильном выполнении процедуры Windows оповещает пользователя о благополучном завершении импорта. Новая электронно-цифровая подпись добавлена на жесткий диск персонального компьютера.

Альтернативный способ установки ЭЦП через меню личных сертификатов не заслуживает внимания ввиду редкого использования.

Установка сертификата

Наиболее часто для работы с ЭП используется система КриптоПро. Установка сертификата осуществляется в ней в 3 шага:

  1. Запустить программу, переключиться на вкладку «Сервис» и нажать кнопку «Посмотреть сертификаты в контейнере». Перед началом установки необходимо подключить защищенный носитель к USB-порту ПК. Если драйвера для ключевого носителя не были инсталлированы заранее, то их также обычно придется установить.Сертификаты в контейнере
  2. Найти нужный контейнер. Для выбора контейнеров следует воспользоваться кнопкой «Обзор».Выбор контейнера
  3. Перейти к просмотру сертификата и выбрать кнопку «Установить». Предварительно имеет смысл просмотреть информацию о сертификате и убедиться, что сделан правильный выбор.Просмотр сертификата

При наличии файла ключа на флэшке или другом носителе его установка осуществляется с помощью следующих действий:

  1. Открыть программу КриптоПро CSP и на вкладке «Сервис» нажать кнопку «Установить сертификат».Установка личного сертификата
  2. Выбрать файл сертификата на компьютере или внешнем носителе.Поиск сертификата
  3. Выбрать в мастере установки автоматический поиск ключевого контейнера.Автоматический поиск
  4. Поставить галочку для установки сертификата в контейнер и завершить операцию.Тип хранилища

Сертификат проверки электронной подписи – важный элемент. Он нужен для проверки подписанта и отсутствия изменений в документе. Только при правильной установке сертификата получится использовать ЭП для документооборота.

Часть 1. самоподписанный сертификат


Для начала рассмотрим вариант самоподписанного сертификата корневого уровня.

Для упрощения задачи сгенерируем сертификат, который будет содержать только необходимые параметры:

  • Версия сертификата
  • Серийный номер
  • Алгоритм подписи
  • Сведения об издателе
  • Дата начала действия сертификата
  • Дата окончания действия сертификата
  • Сведения о владельце
  • Открытый ключ

Сделать это можно с помощью библиотеки Bouncy Castle, следующим образом:

private void button1_Click(object sender, EventArgs e)
        {            

            var KeyGenerate = new RsaKeyPairGenerator();

            KeyGenerate.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024));

            AsymmetricCipherKeyPair kp = KeyGenerate.GenerateKeyPair();

            var gen = new X509V3CertificateGenerator();

            var certName = new X509Name("CN=CA");
            var serialNo = new BigInteger("1",10);            

            gen.SetSerialNumber(serialNo);
            gen.SetSubjectDN(certName);            
            gen.SetIssuerDN(certName);
            gen.SetNotAfter(DateTime.Now.AddYears(100));
            gen.SetNotBefore(DateTime.Now);
            gen.SetSignatureAlgorithm("SHA1WITHRSA");            
            gen.SetPublicKey(kp.Public);     
            var myCert = gen.Generate(kp.Private);
            byte[] result = DotNetUtilities.ToX509Certificate(myCert).Export(X509ContentType.Cert);

            FileStream fs = new FileStream("D:\test1.crt", FileMode.CreateNew);
            fs.Write(result, 0, result.Length);
            fs.Flush();
            fs.Close();
        }

В результате выполнения данной процедуры будет создан стандартный x.509 сертификат, который, будучи открытым с помощью hex-редактора, выглядит вот таким чудесным образом:

30 82 01 8F 30 81 F9 A0  03 02 01 02 02 01 01 30
0D 06 09 2A 86 48 86 F7  0D 01 01 05 05 00 30 0D
31 0B 30 09 06 03 55 04  03 0C 02 43 41 30 20 17
0D 31 33 30 39 31 35 31  35 33 35 30 32 5A 18 0F
32 31 31 33 30 39 32 32  31 35 33 35 30 32 5A 30
0D 31 0B 30 09 06 03 55  04 03 0C 02 43 41 30 81
9F 30 0D 06 09 2A 86 48  86 F7 0D 01 01 01 05 00
03 81 8D 00 30 81 89 02  81 81 00 8D 80 B5 8E 80
8E 94 D1 04 03 6A 45 1A  54 5E 7E EE 6D 0C CB 0B
82 03 F1 7D C9 6F ED 52  02 B2 08 C3 48 D1 24 70
C3 50 C2 1C 40 BC B5 9D  F8 E8 A8 41 16 7B 0B 34
1F 27 8D 32 2D 38 BA 18  A5 31 A9 E3 15 20 3D E4
0A DC D8 CD 42 B0 E3 66  53 85 21 7C 90 13 E9 F9
C9 26 5A F3 FF 8C A8 92  25 CD 23 08 69 F4 A2 F8
7B BF CD 45 E8 19 33 F1  AA E0 2B 92 31 22 34 60
27 2E D7 56 04 8B 1B 59  64 77 5F 02 03 01 00 01
30 0D 06 09 2A 86 48 86  F7 0D 01 01 05 05 00 03
81 81 00 0A 1C ED 77 F4  79 D5 EC 73 51 32 25 09
61 F7 00 C4 64 74 29 86  5B 67 F2 3D A9 39 34 6B
3C A9 92 B8 BF 07 13 0B  A0 9B DF 41 E2 8A F6 D3
17 53 E1 BA 7F C0 D0 BC  10 B7 9B 63 4F 06 D0 7B
AC C6 FB CE 95 F7 8A 72  AA 10 EA B0 D1 6D 74 69
5E 20 68 5D 1A 66 28 C5  59 33 43 DB EE DA 00 80
99 5E DD 17 AC 43 36 1E  D0 5B 06 0F 8C 6C 82 D3
BB 3E 2B A5 F1 94 FB 53  7B B0 54 22 6F F6 4C 18
1B 72 1C


Тот же самый сертификат, но уже открытый с помощью стандартных средств windows:

Имя сертификата	CA
Издатель	CA
Версия сертификата	3
Серийный номер	0x1
Недействителен до...	15.09.2021 15:35:00 GMT
Недействителен после...	22.09.2113 15:35:00 GMT
Цифровая подпись (SHA-1)	F9 AD 58 B5 50 3D F6 36 5E B8 89 D4 DC C8 5F CC 25 4B 93 A2
Цифровая подпись (SHA-256)	42 02 24 20 4E 8F 3A 3E 31 38 88 E5 C5 E7 C3 03 14 3A A6 52 EA 78 B9 77 42 5B 99 EB 4B BA 23 82
Открытый ключ(1024 битный)		Алгоритм открытого ключа	rsaEncryption
Модуль	
00: 8D 80 B5 8E 80 8E 94 D1 04 03 6A 45 1A 54 5E 7E
10: EE 6D 0C CB 0B 82 03 F1 7D C9 6F ED 52 02 B2 08
20: C3 48 D1 24 70 C3 50 C2 1C 40 BC B5 9D F8 E8 A8
30: 41 16 7B 0B 34 1F 27 8D 32 2D 38 BA 18 A5 31 A9
40: E3 15 20 3D E4 0A DC D8 CD 42 B0 E3 66 53 85 21
50: 7C 90 13 E9 F9 C9 26 5A F3 FF 8C A8 92 25 CD 23
60: 08 69 F4 A2 F8 7B BF CD 45 E8 19 33 F1 AA E0 2B
70: 92 31 22 34 60 27 2E D7 56 04 8B 1B 59 64 77 5F
Экспонента	01 00 01                                       

Подпись		Алгоритм подписи	sha1WithRSAEncryption
Подпись	
00: 0A 1C ED 77 F4 79 D5 EC 73 51 32 25 09 61 F7 00
10: C4 64 74 29 86 5B 67 F2 3D A9 39 34 6B 3C A9 92
20: B8 BF 07 13 0B A0 9B DF 41 E2 8A F6 D3 17 53 E1
30: BA 7F C0 D0 BC 10 B7 9B 63 4F 06 D0 7B AC C6 FB
40: CE 95 F7 8A 72 AA 10 EA B0 D1 6D 74 69 5E 20 68
50: 5D 1A 66 28 C5 59 33 43 DB EE DA 00 80 99 5E DD
60: 17 AC 43 36 1E D0 5B 06 0F 8C 6C 82 D3 BB 3E 2B
70: A5 F1 94 FB 53 7B B0 54 22 6F F6 4C 18 1B 72 1C

Имея два этих файла, один с двоичными данными, а другой с описанием сертификата, попробуем разобраться что здесь к чему.

Прежде всего, нужно отметить, что файл *.crt хранит информацию о сертификате в закодированном виде. Для кодирования применяется особый язык, называемый ASN.1.

ASN.1 — стандарт записи, описывающий структуры данных для представления, кодирования, передачи и декодирования данных. Wikipedia


С помощью языка ASN.1 можно описывать сложные структуры, состоящие из данных различных типов. Типичный пример ASN.1-файла выглядит как-то так:

Однако ASN.1 разрабатывался в те светлые времена, когда «640 КБ должно было хватать каждому» и тратить место на такую громоздкую запись не было никакой возможности. Поэтому, в целях экономии места, а также более удобной обработки хранимой в ASN.1-форме информации, был разработан специальный метод кодирования — DER.

DER-кодировка описывается следующим правилом. Первым записывается байт, характеризующий тип данных, затем последовательность байтов хранящих сведения о длине данных и затем уже записываются сами данные.

К примеру, для кодировки целого числа INTEGER 65537 используется следующая форма: 0203 01 00 01.Здесь первый байт 02, определяет тип INTEGER (полную таблицу типов вы можете найти например тут), второй байт 03 показывает длину блока. А следующие за этим байты 01 00 01, являются шестнадцатеричной записью нашего числа 65537.

В нашем случае, для описание простейшего самоподписаного сертификата, достаточно 9 типов данных. Приведем таблицу кодирования для этих типов:

Читайте также:  Получить ЭЦП для госуслуг купить в Краснодаре — самая выгодная цена на официальном сайте
Наименование типаКраткое описаниеПредставление типа в DER-кодировке
SEQUENCEИспользуется для описания структуры данных, состоящей из различных типов.30
INTEGERЦелое число.02
OBJECT IDENTIFIERПоследовательность целых чисел.06
UTCTimeВременной тип, содержит 2 цифры для определения года17
GeneralizedTimeРасширенный временной тип, содержит 4 цифры для обозначения года.18
SETОписывает структуру данных разных типов.31
UTF8StringОписывает строковые данные.0C
NULLСобственно NULL05
BIT STRINGТип для хранения последовательности бит.03

Зная как кодируется каждый из этих типов, мы можем попытаться распарсить наш *.crt файл.

3082 01 8F3081 F9A0030201 02 0201 01 30
0D0609 2A 86 48 86 F7 0D 01 01 05 0500300D
310B30090603 55 04 03 0C02 43 41 302017
0D 31 33 30 39 31 35 31 35 33 35 30 32 5A 180F
32 31 31 33 30 39 32 32 31 35 33 35 30 32 5A 30
0D310B30090603 55 04 03 0C02 43 41 3081
9F 300D0609 2A 86 48 86 F7 0D 01 01 01 0500
0381 8D 00 3081 890281 81 00 8D 80 B5 8E 80
8E 94 D1 04 03 6A 45 1A 54 5E 7E EE 6D 0C CB 0B
82 03 F1 7D C9 6F ED 52 02 B2 08 C3 48 D1 24 70
C3 50 C2 1C 40 BC B5 9D F8 E8 A8 41 16 7B 0B 34
1F 27 8D 32 2D 38 BA 18 A5 31 A9 E3 15 20 3D E4
0A DC D8 CD 42 B0 E3 66 53 85 21 7C 90 13 E9 F9
C9 26 5A F3 FF 8C A8 92 25 CD 23 08 69 F4 A2 F8
7B BF CD 45 E8 19 33 F1 AA E0 2B 92 31 22 34 60
27 2E D7 56 04 8B 1B 59 64 77 5F 0203 01 00 01
300D0609 2A 86 48 86 F7 0D 01 01 05 050003
81 81 00 0A 1C ED 77 F4 79 D5 EC 73 51 32 25 09
61 F7 00 C4 64 74 29 86 5B 67 F2 3D A9 39 34 6B
3C A9 92 B8 BF 07 13 0B A0 9B DF 41 E2 8A F6 D3
17 53 E1 BA 7F C0 D0 BC 10 B7 9B 63 4F 06 D0 7B
AC C6 FB CE 95 F7 8A 72 AA 10 EA B0 D1 6D 74 69
5E 20 68 5D 1A 66 28 C5 59 33 43 DB EE DA 00 80
99 5E DD 17 AC 43 36 1E D0 5B 06 0F 8C 6C 82 D3
BB 3E 2B A5 F1 94 FB 53 7B B0 54 22 6F F6 4C 18
1B 72 1C

Преобразуя байты-идентификаторы типов и убирая байты описывающие длину блоков получим следующую структуру:

SEQUENCE(3 elem)
	SEQUENCE(7 elem)
		[0](1 elem)
			INTEGER 2
		INTEGER 1
		SEQUENCE(2 elem)
			OBJECT IDENTIFIER 1.2.840.113549.1.1.5
			NULL
		SEQUENCE(1 elem)
			SET(1 elem)
				SEQUENCE(2 elem)
					OBJECT IDENTIFIER 2.5.4.3
					UTF8String CA
		SEQUENCE(2 elem)
			UTCTime 13-09-15 15:35:02 UTC
			GeneralizedTime 2113-09-22 15:35:02 UTC
		SEQUENCE(1 elem)
			SET(1 elem)
				SEQUENCE(2 elem)
					OBJECT IDENTIFIER 2.5.4.3
					UTF8String CA
		SEQUENCE(2 elem)
			SEQUENCE(2 elem)
				OBJECT IDENTIFIER 1.2.840.113549.1.1.1
				NULL
			BIT STRING(1 elem)
				SEQUENCE(2 elem)
					INTEGER 00: 8D 80 B5 8E 80 8E 94 D1 04 03 6A 45 1A 54 5E 7E
						        EE 6D 0C CB 0B 82 03 F1 7D C9 6F ED 52 02 B2 08
						        C3 48 D1 24 70 C3 50 C2 1C 40 BC B5 9D F8 E8 A8
						        41 16 7B 0B 34 1F 27 8D 32 2D 38 BA 18 A5 31 A9
						        E3 15 20 3D E4 0A DC D8 CD 42 B0 E3 66 53 85 21
						        7C 90 13 E9 F9 C9 26 5A F3 FF 8C A8 92 25 CD 23
						        08 69 F4 A2 F8 7B BF CD 45 E8 19 33 F1 AA E0 2B
						        92 31 22 34 60 27 2E D7 56 04 8B 1B 59 64 77 5F
					INTEGER 65537
		SEQUENCE(2 elem)
			OBJECT IDENTIFIER 1.2.840.113549.1.1.5
			NULL
	BIT STRING 00: 0A 1C ED 77 F4 79 D5 EC 73 51 32 25 09 61 F7 00
		           C4 64 74 29 86 5B 67 F2 3D A9 39 34 6B 3C A9 92
		           B8 BF 07 13 0B A0 9B DF 41 E2 8A F6 D3 17 53 E1
		           BA 7F C0 D0 BC 10 B7 9B 63 4F 06 D0 7B AC C6 FB
		           CE 95 F7 8A 72 AA 10 EA B0 D1 6D 74 69 5E 20 68
		           5D 1A 66 28 C5 59 33 43 DB EE DA 00 80 99 5E DD
		           17 AC 43 36 1E D0 5B 06 0F 8C 6C 82 D3 BB 3E 2B
		           A5 F1 94 FB 53 7B B0 54 22 6F F6 4C 18 1B 72 1C


Это уже более похоже на то, что мы видим при открытии сертификатов в браузере или Windows. Пробежимся по каждому элементу:

  • INTEGER 2 — целое число, описывающее версию сертификата. Для сертификатов версии 1 равно 0.
  • INTEGER 1 — серийный номер нашего сертификата.
  • OBJECT IDENTIFIER 1.2.840.113549.1.1.5 — последовательность, описывающая алгоритм цифровой подписи. Данная последовательность описывает sha1WithRSAEncryption.
  • OBJECT IDENTIFIER 2.5.4.3 — служит индикатором того, что следующее поле описывает какое либо сведение об издателе. Последовательность 2.5.4.3, описывается свойство CN(common name) — общепринятое имя.
  • UTF8String CA — имя издателя.
  • UTCTime 13-09-15 15:35:02 UTC — дата начала действия сертификата.
  • GeneralizedTime 2113-09-22 15:35:02 UTC — дата окончания действия сертификата.
  • OBJECT IDENTIFIER 2.5.4.3 — описывает тип информации о владельце.
  • UTF8String CA — имя владельца.
  • OBJECT IDENTIFIER 1.2.840.113549.1.1.1 — характеризует алгоритм ключа, в данном случае rsaEncryption.
  • INTEGER 00: — открытый ключ сертификата.
  • BIT STRING 00: — подпись сертификата.

Важным моментом, о котором стоит особенно упомянуть являются данные, для которых вычисляется подпись. Интуитивно может показаться, что подписываются все данные идущие до последнего поля BIT STRING, содержащего подпись. Но на самом деле это не так. В стандарте x.

	SEQUENCE(7 elem)
		[0](1 elem)
			INTEGER 2
		INTEGER 1
		SEQUENCE(2 elem)
			OBJECT IDENTIFIER 1.2.840.113549.1.1.5
			NULL
		SEQUENCE(1 elem)
			SET(1 elem)
				SEQUENCE(2 elem)
					OBJECT IDENTIFIER 2.5.4.3
					UTF8String CA
		SEQUENCE(2 elem)
			UTCTime 13-09-15 15:35:02 UTC
			GeneralizedTime 2113-09-22 15:35:02 UTC
		SEQUENCE(1 elem)
			SET(1 elem)
				SEQUENCE(2 elem)
					OBJECT IDENTIFIER 2.5.4.3
					UTF8String CA
		SEQUENCE(2 elem)
			SEQUENCE(2 elem)
				OBJECT IDENTIFIER 1.2.840.113549.1.1.1
				NULL
			BIT STRING(1 elem)
				SEQUENCE(2 elem)
					INTEGER 00: 8D 80 B5 8E 80 8E 94 D1 04 03 6A 45 1A 54 5E 7E
						        EE 6D 0C CB 0B 82 03 F1 7D C9 6F ED 52 02 B2 08
						        C3 48 D1 24 70 C3 50 C2 1C 40 BC B5 9D F8 E8 A8
						        41 16 7B 0B 34 1F 27 8D 32 2D 38 BA 18 A5 31 A9
						        E3 15 20 3D E4 0A DC D8 CD 42 B0 E3 66 53 85 21
						        7C 90 13 E9 F9 C9 26 5A F3 FF 8C A8 92 25 CD 23
						        08 69 F4 A2 F8 7B BF CD 45 E8 19 33 F1 AA E0 2B
						        92 31 22 34 60 27 2E D7 56 04 8B 1B 59 64 77 5F
					INTEGER 65537

Т.о. если перед вами будет стоять задача проверить ЭЦП x.509 сертификата, то для этого сперва необходимо извлечь TBS-сертификат.

Еще одно замечание относится к отпечатку сертификата. Как видите сам сертификат не содержит никаких сведений об отпечатке. Это объясняется тем, что отпечаток представляет собой обычное хеш-значение SHA-1 от всего файла сертификата, со всеми его полями, включая подпись издателя. Поэтому хранить отпечаток не обязательно, можно просто вычислять хеш при каждом просмотре сертификата.

Заключение

Тех усидчивых людей, которые продрались сквозь все эти ASN.1 выражения и шестнадцатеричные наборы данных, я хотел бы поблагодарить за прочтение. Надеюсь вам было хоть немного интересно. И стало чуточку понятнее, что же такое на самом деле X.509 сертификат.

Ну и как всегда немного ссылок для тех, кому хочется больше подробностей.

  1. RFC5280 — спецификация x.509 сертификата и списка отзывов сертификатов.
  2. Руководство по выживанию — SSL/TLS и сертификаты X.509
  3. ASN.1 простыми словами, вариант статьи для хабра
  4. on-line утилита для декодирования DER-файлов
  5. Первичный стандарт ITU-T X.509 ( русский перевод). Спасибо ystr за ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector