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

Разбираем x.509 сертификат / Хабр Электронная цифровая подпись

В каком хранилище находится сертификат?

В Windows существует три разных типа хранилищ сертификатов, доступные с помощью консоли управления (

MMC

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

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

Однако, есть возможность использовать для этой цели PowerShell и командлет

Get-ChildItem

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

cd cert:
Get-ChildItem localmachinemy

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

Как узнать thumbprint локальных сертификатов?

Один из самых быстрых способов получить список всех сертификатов в хранилище, это использование команды

. Например, чтобы получить список всех сертификатов хранящихся:

1. в персональном хранилище локальной машины:

Get-ChildItem -path "cert:LocalMachineMy"

2. в персональном хранилище текущего пользователя:

Папка в операционной системе

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

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

Поиск отпечатков сертификатов?

По опыту – такое на IIS не делают.

А вообще – очень уж специфичная задача, боюсь ее Вам придется самому решать…

Поиск сертификата через certmgr

CertMgr — это программа для работы с сертификатами на ПК. Также через программу можно посмотреть справочную информацию о консоли управления Microsoft Management Console (MMC) и о том, как настроить удаленное подключение к компьютеру.

Поиск сертификатов на ПК с помощью CertMgr аналогичен поиску через КриптоПро CSP:

  1. Открываем меню «Пуск» и в поисковой строке пишем название диспетчера сертификатов — «CertMgr», запускаем программу CertMgr.
  2. В программе — выбираем папку «Личное», тип объекта — «Сертификаты». Диспетчер выдаст перечень сертификатов, которые установлены на компьютер.
  3. Выбираем из списка нужный сертификат и открываем его.
Поиск сертификата через CertMgr

Поиск сертификата через CertMgr 

Поиск сертификата через internet explorer

Internet Explorer — один из наиболее популярных браузеров для работы с сертификатами ЭП. Долгое время только его можно было использовать для сертификатов. Другие браузеры начали поддерживать работу сертификатов позже — в 2022-2022 годах. Но до сих пор использовать сертификат на некоторых ресурсах можно только в Internet Explorer.

Как найти сертификат с помощью браузера Internet Explorer:

  1. Открываем браузер и нажимаем: Настройки → Свойства браузера → Содержание → Сертификаты
  2. Появится окно с сертификатами, установленными на компьютер. Можно будет просмотреть информацию о них.
Поиск сертификата через Internet Explorer

Поиск сертификата через Internet Explorer

В браузере Chrome и основанных на нем браузерах (Яндекс.Браузер, Opera) сертификаты также можно найти:

Настройки браузера → Приватность и защита → Безопасность и защита → Сертификаты → Просмотр сертификатов.

В браузере Firefox найти сертификат не получится. Этот браузер не работает с российскими сертификатами и отечественными криптографическими алгоритмами.

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

Консоль MMC (Microsoft Management Console) — это место для хранения инструментов и программ, которые предназначены для обслуживания компьютера. Эти средства называются оснастками и служат для управления оборудованием, программным обеспечением и сетевыми компонентами Windows.

Что именно находится в консоли, выбирает пользователь. Перед тем, как пользоваться инструментами консоли, сначала их нужно туда добавить, то есть «Добавить оснастку».

Рассказываем, как запустить консоль и добавить оснастку:

  1. Открываем меню «Пуск» и в поисковой строке указываем — «MMC».
  2. В результатах поиска выбираем консоль управления Windows MMC и запускаем ее.
  3. Нажимаем на вкладку «Файл» и выбираем функцию «Добавить или удалить оснастку». Система выдаст список доступных оснасток.
  4. Выбираем строку «Сертификаты» в перечне оснасток и нажимаем кнопку «Добавить».
  5. Указываем, для какой учетной записи выбираем оснастку — «Моей учетной записи пользователя» и нажимаем «Готово». После этого список сертификатов перейдет из перечня доступных оснасток в окне слева в перечень выбранных оснасток в окне справа.
  6. Подтверждаем выбор: в окне выбранных оснасток выбираем инструмент «Сертификаты» и нажимаем «Ок».
  7. Прописываем название консоли и выбираем, куда ее сохранить.
Добавление сертификата в консоль управления Windows

Добавление сертификата в консоль управления Windows

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

Как запустить консоль, в которую добавлены сертификаты:

  1. Открываем меню «Пуск» и в поисковой строке указываем название консоли. Например, «Консоль1».
  2. Выбираем консоль, запускаем ее и нажимаем: Корень консоли → Сертификаты → Личное → Сертификаты.
  3. Нажимаем на иконку сертификата и открываем его.
Просмотр сертификата в консоли управления Windows

Просмотр сертификата в консоли управления Windows

Сертификат на компьютере можно найти несколькими путями. Наиболее простые через программу КриптоПро CSP или браузер. Чуть более сложные — через диспетчер сертификатов CertMgr или консоль управления Windows.

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

Поиск сертификата через криптопро csp

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

Чтобы найти сертификат через КриптоПро CSP на ПК:

  1. Открываем программу: Пуск → Все программы — КриптоПро CSP.
  2. В программе переходим по вкладкам: Сертификаты пользователя → Личное → Сертификаты.
  3. Выбираем нужный сертификат и делаем с ним то, что планировали: смотрим информацию в сертификате, экспортируем его или удаляем.
Поиск сертификата через КриптоПро CSP

Поиск сертификата через КриптоПро CSP

После открытия сертификата через КриптоПро CSP, вкладка с ним появится в меню «Пуск». В следующий раз сертификат можно будет открыть быстрее — сразу из этого меню.

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

  1. Перейдите в подпапку “Сертификаты” папки “Личное” и проверьте, установлен ли действующий сертификат вашей электронной подписи. Если в папке нет вашего сертификата, то его необходимо установить.
personalcert
На скриншоте видно, что сертификат электронной подписи установлен в папку «Личное», и срок его действия не истёк.

Как установить сертификат электронной подписи? Инструкция.

Если в папке “Личное” вы не обнаружили свой действующий сертификат ЭЦП.

Проверка сертификата минкомсвязи россии

  1. Зайдите в приложение “Сертификаты”, которое было установлено вместе с КриптоПро CSP, или в приложение “Сертификаты пользователя” certmgr.msc
  2. Убедитесь, что в подпапке “Сертификаты” папки “Доверенные корневые центры сертификаты” установлен действующий сертификат Минкомсвязи России.
minkomsviaz
На скриншоте видно, что сертификат Минкомсвязи России установлен в папку “Доверенные корневые центры сертификации”, и срок его действия не истёк.

Как установить сертификат Минкомсвязи России? Инструкция.

Если сертификат не установлен, или срок действия сертификата истёк.

Проверка сертификата удостоверяющего центра

  1. Перейдите в подпапку “Сертификаты” папки “Промежуточные центры сертификаты” и проверьте, установлен ли действующий сертификат Вашего удостоверяющего центра. В нашем случае ЭЦП выпускало ООО “Айти Мониторинг”. Поэтому мы ищем действующий сертификат этой организации.
promezhut
На скриншоте видно, что сертификат удостоверяющего центра установлен в папку «Промежуточные центры сертификации», и срок его действия не истёк.

Как установить сертификат вашего удостоверяющего центра? Инструкция.

Если сертификат не установлен, или срок действия сертификата УЦ истёк.

Просмотр содержимого ключей и сертификатов


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

В следующих командах используются тестовые файлы со следующими именами:

Обратите внимание на расширения файлов — они могут отличаться от тех, которые используются в других инструкциях. Например, вместо .key и .crt может использоваться расширение .pem. Расширение файла не имеет особого значения кроме как служить подсказкой пользователю, что именно находится в этом файле. Это же самое касается и имён файлов — вы можете выбирать любые имена.

Все эти файлы являются текстовыми:

cat rootCA.key


Там мы увидим примерно следующее:

-----BEGIN PRIVATE KEY-----
MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDJBKkr6XzzAcXD
eyDQdvB0SWE2Fl3nqlX/c2RgqMgScXtgidEzOu9ms3Krju5UKLokkQJrZFPMtiIL
MuPJFdYjVyfkfnqlZiouBVgJ60s8NQBBI8KnyyAoJCIFdASoW4Kv5C5LT8pX9eRa
/huJaRJL5XsFUGnTOLvW2ZLN52iAux9CoZlmH6ZF4nuQpblwN0MHULAhze52VNFT
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
-----END PRIVATE KEY-----

Реестр

Реестр компьютера — это список настроек и параметров ПК. Увидеть реестр компьютера можно, набрав в строке поиска на панели «Пуск» — «regedit». Поиск позволит открыть служебную программу — редактора реестра.

Путь к сертификату через реестр

Путь к сертификату через реестр

Найти сертификат на ПК можно несколькими путями:

  • с помощью программы КриптоПро CSP;
  • программы CertMgr;
  • браузера;
  • консоли MMC.

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

В КриптоПро CSP и браузере также можно скопировать сертификат вместе с закрытым ключом, в программе CertMgr и консоли ММС — только файл сертификата. Для такого копирования сертификата и его ключа рекомендуем использовать сервис копирования сертификатов на Установочном диске, где пользователю не требуется детально погружаться в механизмы работы ЭП.

Часть 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.2022 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 типов данных. Приведем таблицу кодирования для этих типов:

Зная как кодируется каждый из этих типов, мы можем попытаться распарсить наш *.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. Пробежимся по каждому элементу:

Важным моментом, о котором стоит особенно упомянуть являются данные, для которых вычисляется подпись. Интуитивно может показаться, что подписываются все данные идущие до последнего поля 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 от всего файла сертификата, со всеми его полями, включая подпись издателя. Поэтому хранить отпечаток не обязательно, можно просто вычислять хеш при каждом просмотре сертификата.

Часть 2. сертификат 2-го уровня

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

Заключение

Тех усидчивых людей, которые продрались сквозь все эти 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 за ссылку.
Читайте также:  Копирование сертификатов
Оцените статью
ЭЦП Эксперт