Начало:
1.
Криптография: простейшие термины этой науки2.
Система шифрования с открытым ключом3.
Зачем нужны центры сертификации при асимметричном шифровании4.
Зачем нужны самозаверенные сертификаты открытого ключа Хранилища сертификатов
В операционных системах «Windows» (у меня установлена «Windows 10», так что речь в основном пойдет про нее) сертификаты хранятся на логическом уровне в так называемых «хранилищах» (по-английски «store» или «storage»).
Под «сертификатами» в этом посте имеются в виду файлы цифровых сертификатов открытого ключа (см. подробнее об этом предыдущие посты).
Я написал «на логическом уровне» потому, что по хранилищу сертификатов непонятно, на каком конкретно жестком диске компьютера хранятся сертификаты, в какой конкретно папке файловой системы они хранятся. (В данном посте не будет разбираться поиск точного местонахождения сертификатов на компьютере. Это отдельная тема, которая мне пока что неинтересна.)
На компьютере под управлением операционной системы «Windows 10» существует два главных хранилища сертификатов:
- хранилище компьютера (локальной машины);
- хранилище текущего пользователя.
Пользователь с правами администратора данной операционной системы может работать с каждым из этих хранилищ. Обычный пользователь имеет доступ только к хранилищу сертификатов текущего пользователя.
Насколько я понимаю, в хранилище компьютера отображаются сертификаты, доступные для всех пользователей данной операционной системы. Доступность этих сертификатов всем пользователям обеспечивается тем, что при открытии хранилища сертификатов обычного пользователя там будут видны все сертификаты из хранилища компьютера (они «наследуются»). Поэтому хранилище текущего пользователя обычно содержит больше сертификатов, чем хранилище компьютера: видны все сертификаты из хранилища компьютера и дополнительно сертификаты, доступные только текущему пользователю.
Таким образом, если пользователь с административными правами добавит сертификат в хранилище компьютера, то этот сертификат будет виден (доступен) в хранилище каждого пользователя этого компьютера. Если обычный пользователь добавит сертификат в хранилище текущего пользователя, то этот сертификат будет доступен только этому пользователю.
Подхранилища
Оба вышеописанных хранилища разбиты на подхранилища (папки с сертификатами). У меня их больше десятка. Но самые важные из них сейчас для меня два следующих:
- Личное;
- Доверенные корневые центры сертификации.
Инструменты для работы с хранилищами сертификатов
Как обычно, в операционной системе «Windows» есть множество способов для выполнения нужной задачи. Для работы с хранилищами сертификатов, в частности, можно использовать следующее:
- стандартный способ через графический (оконный) интерфейс;
- из командной строки в программе-оболочке «PowerShell»;
- различные программы командной строки вроде «
certmgr.exe» или «
certutil.exe»;
- можно написать программу для работы с сертификатами самому и так далее.
В этом посте я буду рассматривать только стандартный способ работы с хранилищами сертификатов через графический (оконный) интерфейс.
Консоль управления Microsoft (MMC)
Операционные системы «Windows» включают очень старый компонент (программу), который называется по-английски «Microsoft Management Console», сокращенно «MMC» (по-русски «Консоль управления Microsoft»). Первая версия этой программы была выпущена в 1998 году, но она до сих пор в строю и ее можно использовать для решения различных административных задач в рамках операционной системы. Насколько я понимаю, актуальная версия этой программы 3.0. Эта версия появилась в составе пакета обновлений SP3 для «Windows XP» (2007-2008 годы) и с тех пор в нее не вносилось заметных изменений. В нашем случае ее можно использовать для работы с хранилищами сертификатов.
Исполняемый файл этой программы - «mmc.exe». Ее можно вызвать с помощью команды «mmc» из любого местоположения, так как она хранится в системной папке %windir%\System32\. Я обычно набираю команду «mmc» в строке поиска «Windows 10» возле кнопки «Пуск», поиск находит эту программу и выдает ссылку «Открыть» для ее запуска.
Насколько я понимаю, сама консоль - это просто пустая площадка, на которую можно добавлять различные модули. Таким образом, каждый может настроить для своей работы такую площадку, которая ему больше всего подходит, регулируя состав модулей на площадке. Каждый модуль предназначен для решения своей административной задачи. Отдельный модуль представляет собой файл динамически подключаемой библиотеки (файл с расширением «.dll»), взаимодействие между модулем и консолью выполняется по стандарту «
COM».
Этих модулей довольно много, их можно добавить в консоль через меню «Файл - Добавить или удалить оснастку...». По-английски такой модуль называют «snap-in». Почему выбрано такое название - не знаю, обычно такие модули по-английски называют «plug-in» (по-русски «
плагин»). Думаю, эти слова можно считать синонимами. Слово «snap-in» на русский язык почему-то перевели как «оснастка». По-моему, такой перевод - это вообще пальцем в небо. У меня слово «оснастка» ассоциируется с морскими кораблями, парусниками. Но такой перевод сложился уже давно и все к нему привыкли. Хотя по слову «оснастка» нелегко сообразить, что в английском это «snap-in».
После составления своей «площадки» (консоли) с оснастками эту площадку можно сохранить в файл с расширением «.msc» (аббревиатура «MSC» расшифровывается как «Microsoft Saved Console», по-русски «сохраненная консоль Microsoft»). В дальнейшем этот файл можно поместить на рабочий стол и запускать именно его. Файлы с расширением «.msc» по умолчанию привязаны к программе «mmc.exe» и передаются ей в качестве входного параметра.
Встроенные сохраненные консоли для работы с хранилищами сертификатов
Раньше нужно было создавать свою консоль для оснасток, предназначенных для работы с хранилищами сертификатов. Но в операционной системе «Windows 10» есть встроенные сохраненные консоли с нужными оснастками для работы с хранилищами сертификатов. Поэтому напрямую вызывать программу «mmc.exe» и работать с нею теперь не требуется (если нужно выполнить только манипуляции с сертификатами в хранилищах сертификатов).
Для запуска встроенной в операционную систему сохраненной консоли для работы с хранилищем сертфикатов данного компьютера (локальной машины) можно в строке поиска операционной системы (рядом с кнопкой «Пуск») набрать фразу «Управление сертификатами компьютеров» (у меня операционная система «Windows 10» с русскоязычным интерфейсом; в англоязычном интерфейсе, естественно, нужно будет искать на английском). Поиск найдет ссылку «Открыть» для этой сохраненной консоли, по которой и следует перейти. (Напомню, для работы с хранилищем сертификатов компьютера требуются права администратора.) Вот как окно этой сохраненной консоли выглядит у меня:
Очевидно, что это окно программы «mmc.exe» с загруженной в него сохраненной консолью из файла «certlm.msc». Обратите внимание на заголовок окна с названием файла: certlm (расширение не указано, но оно есть, просто в заголовке окна оно опущено). Окончание «lm» в этом слове расшифровывается как «local machine» (по-русски в этом случае можно перевести как «данный компьютер»). Файл «certlm.msc» расположен в той же папке %windir%\System32\, что и файл «mmc.exe», поэтому его тоже можно вызвать из любого местоположения из командной строки командой «certlm».
Для запуска встроенной в операционную систему сохраненной консоли для работы с хранилищем сертификатов текущего пользователя можно в строке поиска операционной системы (рядом с кнопкой «Пуск») набрать фразу «Управление сертификатами пользователей». Вот как окно этой сохраненной консоли выглядит у меня:
Опять же, это окно программы «mmc.exe» с загруженной в него сохраненной консолью из файла «certmgr.msc». Название «certmgr» расшифровывается как «Certificate Manager» (по-русски «Менеджер сертификатов» или «Диспетчер сертификатов»). Для работы с этой сохраненной консолью не требуется прав администратора операционной системы, достаточно прав текущего пользователя. Опять же, файл «certmgr.msc» хранится в той же папке %windir%\System32\, о которой уже дважды было упомянуто ранее. Его можно запустить из любого местоположения из командной строки с помощью команды «certmgr».
Важно отметить, что сохраненная консоль «certmgr.msc» и программа командной строки «
certmgr.exe» - это разные вещи. Не следует их путать.
Ссылки по теме:
https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/working-with-certificates https://learn.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in