Как найти сертификат по отпечатку сертификата

Найти сертификат по отпечатку

Profile picture for user Олег

Windows Server

Нашёл на контроллере домена событие Event ID: 64 вида:

Certificate for local system with Thumbprint 23 24 17 36 28 fe c7 37 97 4c c0 9c 20 c1 fe 6b dd c7 9f 50 is about to expire or already expired.

ssl

Известен отпечаток сертификата, нужно по отпечатку определить сам сертификат. Отпечаток:

2324173628fec737974cc09c20c1fe6bddc79f50

Выполняем в PowerShell, указав отпечаток:

Get-ChildItem -Recurse -Path cert: | ?{ $_.GetType().Name -eq 'X509Certificate2' } | ?{ $_.Thumbprint -eq '2324173628fec737974cc09c20c1fe6bddc79f50' } | select Subject, PSParentPath, SerialNumber

ssl

В итоге получаем серийный номер:

170000015DE8C6DEB49A0F713200000000015D

Запускаем оснастку mmc:

mmc

Открывается консоль.

ssl

File → Add/Remove Snap-in…

ssl

Выбираем слева Certificates. Add.

ssl

Выбираем хранилище сертификатов. Текущего пользователя, службы или локального компьютера. Скорее всего дохлый сертификат в Computer account. Выбираю. Если не найдём, можно добавить в оснастку сертификаты и из других хранилищ. Next.

ssl

OK.

ssl

Отображается оснастка сертификатов. Выделяем Certificates (Local Computer).

ssl

Actions → All Tasks → Find Certificates…

ssl

Указываем серийный номер сертификата, выбираем Look in Field: Serial Number. Find Now.

ssl

Сертификат найден.

Похожие материалы

Почитать

Определить сертификат по отпечатку

Нашёл на контроллере домена событие Event ID: 64 вида:

Certificate for local system with Thumbprint 23 24 17 36 28 fe c7 37 97 4c c0 9c 20 c1 fe 6b dd c7 9f 50 is about to expire or already expired.

Определить сертификат по отпечатку

Известен отпечаток сертификата, нужно по отпечатку определить сам сертификат. Отпечаток:

2324173628fec737974cc09c20c1fe6bddc79f50

Выполняем в PowerShell, указав отпечаток:

Get-ChildItem -Recurse -Path cert: | ?{ $_.GetType().Name -eq ‘X509Certificate2’ } | ?{ $_.Thumbprint -eq ‘2324173628fec737974cc09c20c1fe6bddc79f50’ } | select Subject, PSParentPath, SerialNumber

Определить сертификат по отпечатку

В итоге получаем серийный номер:

170000015DE8C6DEB49A0F713200000000015D

Запускаем оснастку mmc:

Определить сертификат по отпечатку

Открывается консоль.

Определить сертификат по отпечатку

File → Add/Remove Snap-in…

Определить сертификат по отпечатку

Выбираем слева Certificates. Add.

Определить сертификат по отпечатку

Выбираем хранилище сертификатов. Текущего пользователя, службы или локального компьютера. Скорее всего дохлый сертификат в Computer account. Выбираю. Если не найдём, можно добавить в оснастку сертификаты и из других хранилищ. Next.

Определить сертификат по отпечатку

OK.

Определить сертификат по отпечатку

Отображается оснастка сертификатов. Выделяем Certificates (Local Computer).

Определить сертификат по отпечатку

Actions → All Tasks → Find Certificates…

Определить сертификат по отпечатку

Указываем серийный номер сертификата, выбираем Look in Field: Serial Number. Find Now.

Определить сертификат по отпечатку

Сертификат найден.

Источник:
https://internet-lab.ru/search_cert_by_thumbprint

💰 Поддержать проект

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.

I am using this code to find the certificate by its thumbprint. certificate exists in certificate manager in personal certificate store but this code is not finding that certificate.

Please tell me where I’m doing wrong in it.

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string certThumbPrint = "‎‎fe14593dd66b2406c5269d742d04b6e1ab03adb1";
            X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
            // Try to open the store.

            certStore.Open(OpenFlags.ReadOnly);
            // Find the certificate that matches the thumbprint.
            X509Certificate2Collection certCollection = certStore.Certificates.Find(
                X509FindType.FindByThumbprint, certThumbPrint, false);
            certStore.Close();

            // Check to see if our certificate was added to the collection. If no, 
            // throw an error, if yes, create a certificate using it.
            if (0 == certCollection.Count)
            {
                Console.WriteLine("Error: No certificate found containing thumbprint " );
            }
            Console.ReadLine();
}

asked Jun 20, 2012 at 8:23

RATHI's user avatar

RATHIRATHI

5,0498 gold badges39 silver badges48 bronze badges

2

Just stumbled over this question when Googling for the same issue, and found the answer here: if, like me, you obtained your “source” thumbprint from MMC by highlighting the thumbprint and copying it to the clipboard, you’ve almost certainly caught an invisible character at the start of the screen, so:

string certThumbPrint = “‎‎fe14593dd66b2406c5269d742d04b6e1ab03adb1”;

is actually

string certThumbPrint = “‎‎INVISIBLECHARACTERfe14593dd66b2406c5269d742d04b6e1ab03adb1″;

If you delete this invisible character (you can tell it’s there when you press backspace or delete beside it and nothing seems to happen), or just retype the thumbprint by hand, your code should work fine. Now if only Visual Studio had a “show invisible characters” option …

Community's user avatar

answered Feb 13, 2013 at 11:40

KenD's user avatar

KenDKenD

5,2097 gold badges48 silver badges85 bronze badges

7

The string literal containing your thumbprint has a left-to-right mark at the beginning. When MMC lists the certificate properties, it precedes the thumbprint value with this character so that the hex bytes are listed left to right even in locales where the text is normally rendered right to left.

Likely, this was a shortcut someone took because it was easier to prepend a character to one of the values in the property list than write a bit of code to dynamically update the edit control’s style. Perhaps it was a quick fix to a bug report during localization testing.

In the MMC, the left-to-right mark has non-zero width, which you can observe by watching the cursor move when you arrow across it and my noticing that the first row of hex bytes is shifted slightly to the right compared to the second row.

In other editors such as Visual Studio, the left-to-right mark has no width, but you can still observe it by noticing that the cursor does not move when you arrow across is. As KenD answered, deleting this character solves the problem.

Quick way to identify the invisible character: Use the keyboard to select the invisible character; then paste it into Word between some normal characters. Select it in Word; then click Insert > Symbol > More Symbols. Look in the lower left under “Unicode name”.

answered Jun 2, 2015 at 1:28

Edward Brey's user avatar

Edward BreyEdward Brey

39.9k19 gold badges197 silver badges249 bronze badges

0

to ensure that those LTR “u200e” and RTL “u200f” chars are removed from your thumbprint string
do the following

thumbprint = thumbprint.Replace("u200e", string.Empty).Replace("u200f", string.Empty).Replace(" ",string.Empty);

the last string replace for the white space removal isnt completely necessary as it finds my certificate with or without them.

other troublesome unicode characters can be found here

UTF-8 encoding table and Unicode characters

answered Jun 3, 2015 at 15:08

drowhunter's user avatar

drowhunterdrowhunter

3612 silver badges12 bronze badges

My two cents: I copied the value in MMC and pasted it in VS with White Spaces enabled.

There was nothing in the beginning but a space in the end:
“1e 52 73 0d 00 29 e6 85 7b e6 23 e2 fa c7 a5 08 ac 36 5e 57 “

Now, in web.config file I pasted the value maintaining all the spaces inside, removing the final space:
“1e 52 73 0d 00 29 e6 85 7b e6 23 e2 fa c7 a5 08 ac 36 5e 57”

This works fine.

If I use “1e52730d0029e6857be623e2fac7a508ac365e57”, removing the space inside as I see in other posts, doesn’t work…

Hope this can help 😉

answered May 20, 2015 at 9:04

vulcanik's user avatar

vulcanikvulcanik

981 silver badge4 bronze badges

I run this powershell script to get all thumbprints and redirect the output to a text file and copy the thumbprint from there.

Get-ChildItem -path cert:LocalMachineMy

To redirect to the output to a text file use this:

Get-ChildItem -path cert:LocalMachineMy > thumbprints.txt

answered May 21, 2016 at 2:09

Pradeep's user avatar

PradeepPradeep

7191 gold badge7 silver badges13 bronze badges

1

I did the following to remove the extra character, and also to remove anything else that’s not valid hexadecimal (and ToUpper it):

            thumbprint = Regex.Replace(thumbprint.ToUpper(), @"[^0-9A-F]+", string.Empty);

This allowed me to copy the thumbprint straight from the cert manager dialog and paste it straight into my usage.

answered Aug 14, 2018 at 5:07

Darren Sandford's user avatar

December 11 2017, 16:55

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

Поиск сертификата по отпечатку с выводом пути размещения, чтобы не забыть:

Get-ChildItem -Recurse -Path cert: | ?{ $_.GetType().Name -eq 'X509Certificate2' } | ?{ $_.Thumbprint -eq '1197A1DFEC40697712DFF07341C763B86И6D91A0' } | select Subject, PSParentPath, SerialNumber

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

Скажите, пожалуйста, где я делаю не так.

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
    string certThumbPrint = "‎‎fe14593dd66b2406c5269d742d04b6e1ab03adb1";
            X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
            // Try to open the store.

            certStore.Open(OpenFlags.ReadOnly);
            // Find the certificate that matches the thumbprint.
            X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, certThumbPrint, false);
            certStore.Close();

            // Check to see if our certificate was added to the collection. If no, throw an error, if yes, create a certificate using it.
            if (0 == certCollection.Count)
            {
                Console.WriteLine("Error: No certificate found containing thumbprint " );
            }
            Console.ReadLine();
}

20 июнь 2012, в 11:03

Поделиться

Источник

6 ответов

Просто наткнулся на этот вопрос, когда Googling по той же проблеме, и нашел ответ здесь: если, как и я, вы получили свой “исходный” отпечаток с MMC на выделяя отпечаток и копируя его в буфер обмена, вы почти наверняка поймали невидимый персонаж в начале экрана, так что:

string certThumbPrint = “fe14593dd66b2406c5269d742d04b6e1ab03adb1”;

на самом деле

string certThumbPrint = “ INVISIBLECHARACTER fe14593dd66b2406c5269d742d04b6e1ab03adb1″;

Если вы удалите этот невидимый символ (вы можете сказать это там, когда вы нажимаете backspace или удаляете рядом с ним, и ничего не происходит) или просто перепечатайте отпечаток вручную, ваш код должен работать нормально. Теперь, если только Visual Studio имеет параметр “показать невидимые символы”…

KenD
13 фев. 2013, в 12:59

Поделиться

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

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

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

В других редакторах, таких как Visual Studio, метка слева направо не имеет ширины, но вы все равно можете наблюдать ее, заметив, что курсор не перемещается, когда вы стрелка поперек. Как сказал KenD, удаление этого символа решает проблему.

Быстрый способ идентификации невидимого персонажа: Используйте клавиатуру для выбора невидимого символа; затем вставьте его в Word между некоторыми нормальными символами. Выберите его в Word; затем нажмите “Вставить” > “Символ” > “Дополнительные символы”. Посмотрите в левом нижнем углу под названием “Юникод”.

Edward Brey
02 июнь 2015, в 03:02

Поделиться

чтобы эти символы LTR ” u200e” и RTL ” u200f” были удалены из вашей строки отпечатка
сделайте следующее

thumbprint = thumbprint.Replace("u200e", string.Empty).Replace("u200f", string.Empty).Replace(" ",string.Empty);

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

другие неприятные символы Юникода можно найти здесь

таблица кодировки UTF-8 и символы Юникода

drowhunter
03 июнь 2015, в 16:54

Поделиться

Мои два цента: я скопировал значение в MMC и вставил его в VS с включенными белыми пространствами.

В начале не было ничего, кроме пробела в конце:
“1e 52 73 0d 00 29 e6 85 7b e6 23 e2 fa c7 a5 08 ac 36 5e 57”

Теперь, в файле web.config, я вставил значение, сохраняя все пробелы внутри, удалив конечное пространство:
“1e 52 73 0d 00 29 e6 85 7b e6 23 e2 fa c7 a5 08 ac 36 5e 57”

Это отлично работает.

Если я использую “1e52730d0029e6857be623e2fac7a508ac365e57”, удаление пространства внутри, как я вижу в других сообщениях, не работает…

Надеюсь, это поможет;)

vulcanik
20 май 2015, в 10:18

Поделиться

Я запускаю эту powershell script, чтобы получить все отпечатки и перенаправить вывод в текстовый файл и скопировать отпечаток оттуда.

Get-ChildItem -path cert:LocalMachineMy

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

Get-ChildItem -path cert:LocalMachineMy > thumbprints.txt

Pradeep
21 май 2016, в 04:02

Поделиться

Ещё вопросы

  • 1Python создает столбец на основе того, является ли строка подстрокой в панде Dataframe
  • 1ASP.net MVC параметры маршрутизации
  • 0Найдите поле ввода с определенным идентификатором и атрибутом обновления, используя jQuery
  • 1gTTS Python Script в фоновом режиме получает tcgetattr (): неподходящий ioctl для устройства
  • 0Как отключить гиперссылку в зависимости от условий в кендо?
  • 0Как улучшить плагин автозаполнения jquery
  • 1Выражение Linq из Lambda: укажите параметр явно
  • 0Ошибка «Анализ: неизвестное имя типа» после обновления XCode
  • 0Зависимости библиотеки во время выполнения
  • 1Масштабирование повернутого прямоугольника и поиск новых контрольных точек и центра
  • 1Составить 2d массив списка точек
  • 0перемещение приложения php на локальный сервер
  • 0PHP CSV показывает в таблице
  • 0jquery навигационная анимация шоу
  • 0Несколько, если операторы не работают
  • 1Это отношения многие ко многим?
  • 0jQuery – ошибка перетаскиваемого элемента в стиле html + возврат в оригинальный контейнер
  • 1Полное удаление дублированных данных без сохранения одного
  • 0В каком формате создается ссылка href с использованием переменной?
  • 0JQuery выделяет элемент меню изображением, когда пользователь выбирает его и меняет цвет фона при наведении
  • 0Граница не адаптируется к стилю списка: нет;
  • 1Объединение листов Excel в несколько циклов
  • 0Агрегация не работает в Mongoose с Match и Group
  • 1Внедрить данные в компонент в Bootstrap Modal на Angular 4
  • 1NotificationCompat.Builder () не принимает идентификатор канала в качестве аргумента
  • 0Как получить параметры в contollerFactory Zend 2?
  • 1Отправить электронную почту через Python с помощью Outlook 2016, не открывая его
  • 1Есть ли быстрые альтернативы для функции TextureView.getBitmap ()?
  • 1Написать ключ для разделения CSV на основе значения в словаре
  • 0Rails Active Record Query Total отправляется в будний день
  • 0quickfix bad_cast исключение с взломанным login_message
  • 0Почему я не могу найти совпадений с knnMatch, используя OpenCV с C ++?
  • 1Сравнение файлов – содержимое может быть неупорядоченным
  • 0Является ли смешанная блокировка контента исключительной для объявлений Google?
  • 0Привязка к следующему элементу только при первой прокрутке
  • 0Как сгруппировать / разбить этот массив массив в php N
  • 0Как вызвать клик при наведении курсора на элемент на x секунд, используя JQuery?
  • 1Цикл проектов в решении в MSBuild
  • 1DLL должна завершить свою работу, хотя ссылочное приложение закрывается
  • 0Логин, получение имени и ошибка выхода
  • 0Доступ к области действия из другой директивы
  • 0Невозможно отправить данные для просмотра в приложении nodejs
  • 1NAudio Asio Запись и воспроизведение
  • 1Расщепление строк в Java
  • 1Горячая замена для модулей веб-приложений
  • 0Как я могу использовать jQuery для изменения заголовков POST по клику?
  • 1Как скопировать / повторить массив N раз в новый массив? [Дубликат]
  • 0Дополнительное пространство под нижним колонтитулом
  • 1Сохранение порядка имен столбцов to_dict
  • 1Javascript дает недействительный месяц, когда месяц установлен на 5

Сообщество Overcoder

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