Посмотреть сертификаты на компьютере через cmd
В мире компьютеров существуют цифровые сертификаты, назначение которых примерно то же самое — они четко идентифицируют принадлежность к какому-то лицу, чаще юридическому. Сертификатами часто снабжаются программы или драйверы, чтобы удостоверить их подлинность — тот факт, что они были выпущены определенным, доверенным производителем программного обеспечения. Выдают сертификаты и подтверждают их подлинность специальные международные центры сертификации (Certificate Authority или CA), которые берут деньги за выдачу сертификатов. Все безусловно доверяют этим CA как независимому арбитру. Сам сертификат представляет из себя публичный ключ — специальным образом сгенерированную псевдослучайную, уникальную последовательность данных. Например, сертификатом может быт такой текстовый файл (формат Base-64 X.509):
——BEGIN CERTIFICATE——
MIIE6jCCA9KgAwIBAgIQdB7KfpVPv65NIapf4sT0FjANBgkqhkiG9w0BAQUFADBi
Y2UwHhcNMDYwMTE2MTYzNDMwWhcNMTEwMTE2MTY0MjE1WjBiMRMwEQYKCZImiZPy
.
Y/DDITB1tiiW19A8wNCc/LnScOmn8XZUJYI8AUTOasKK2SGvhQpcZBy+RPD2QUDO
Yy5XK/kWKQE4jtOVkRA=
——END CERTIFICATE——
Сертификаты функционально связаны с криптографией. С точки зрения криптографии сертификат — цифровой документ, подтверждающий соответствие между открытым ключом и информацией, идентифицирующей владельца ключа. Сертификат содержит информацию о владельце ключа, сведения об открытом ключе, его назначении и области применения, название центра сертификации и т. д. Открытый ключ (сертификат) может быть использован для организации защищенного канала связи с владельцем двумя способами:
— для проверки подписи владельца (аутентификация)
— для шифрования посылаемых ему данных (конфиденциальность)
Существует две модели организации инфраструктуры сертификатов: централизованная (PKI) и децентрализованная (PGP). В централизованной модели существуют корневые центры сертификации, подписям которых обязан доверять каждый пользователь. В децентрализованной модели каждый пользователь самостоятельно выбирает, каким сертификатам он доверяет и в какой степени.
Децентрализованная модель обеспечивает шифрование с применением двух ключей: закрытого и открытого. Чтобы реализовать обмен данных с использованием децентрализованной модели необходимо, чтобы отправитель имел у себя открытый ключ, а адресат — закрытый. Отправитель шифрует данные с помощью открытого ключа адресата и отправляет их адресату. Адресат, получив данные, расшифровывает их с помощью своего закрытого ключа. Математически ключи подобраны так, что имея один очень сложно, даже почти невозможно восстановить другой. Закрытый ключ следует хранить у себя, а открытый — раздавать клиентам, которые отправляют вам зашифрованные данные.
Управлять сертификатами в Windows можно специальной оснасткой — см. «Где просмотреть установленные в системе сертификаты».
Как проверить хранилище сертификатов Windows на предмет недоверенных корневых сертификатов
Т е из пользователей, которые следят за новинками из мира компьютерной техники, хорошо помнят разразившийся пару лет назад скандал, связанный поставляемой с некоторыми моделями ноутбуков Lenovo программы Superfish, представляющей собой типичный Malware . Установив в хранилище ключей Windows свой сертификат, это зловредное приложение перехватывало трафик, анализировало пользовательские запросы и вставляло на страницы веб-сайтов «нужную» рекламу.
К слову, подобные случаи не так уже и редки, можно привести массу и других примеров, в которых инсталлируемое программное обеспечение, с виду совершенно безопасное, устанавливало или подменяло корневые сертификаты. Все это еще раз говорит о том, что при установке новых приложений не помешало бы проявлять осторожность, также важно понимать какие программы и сертификаты предустановлены в системе самим производителем компьютерной техники.
Поддельные и сторонние сертификаты могут выполнять те же задачи, что и Malware , поэтому время от времени не мешало бы проверять хранилище Windows (Trusted Root Certification Authorities) на предмет наличия таких ключей. Давайте же разберемся, как это можно сделать. Для этого вам понадобится специальная утилита Sigcheck, входящая в набор инструментов системного администратора Sysinternals .
Скачайте архив с утилитой с официального сайта technet.microsoft.com/ru-ru/sysinternals/bb897441.aspx и распакуйте в любое удобное расположение, в нашем случае это папка C:Sigcheck . Откройте от имени администратора командную строку, перейдите в каталог с исполняемым файлом утилиты, а затем выполните такую команду:
sigcheck.exe -tv или sigcheck64.exe -tv на 64 -битных системах
Если утилита запросит подтверждение, нажмите в открывшемся окошке «Agree».
После этого Sigcheck должна загрузить с сайта Microsoft файл authrootstl.cab со списком доверенных сертификатов и поместить его в папку со своим исполняемым файлом. Если этого не произойдет, скачайте файл самостоятельно по ссылке yadi.sk/d/5c6Mp2Xy3GTFLG и забросьте его в каталог с утилитой Sigcheck, а приведенную выше команду выполните еще раз.
В процессе выполнения команды утилита сравнит установленные в системе сертификаты с теми, которые в списке архива authrootstl.cab . Если на компьютере будут выявлены сторонние или недоверенные сертификаты, программка выведет их список в командной строке.
Впрочем, это еще не означает, что сторонние сертификаты нужно немедленно удалять.
Важно понять, какая именно программа его установила и использует. К примеру, в нашем случае сертификат «avast! Web/Mail Shield Root» используется антивирусом Avast , поэтому удалять его не нужно.
Если сертификат не вызывает у вас доверия, равно как и установленная некогда программа, можете удалить его.
Для этого откройте командой MMC консоль оснастки, в меню «Файл» выберите команду «Добавить или удалить оснастку».
В левой колонке открывшегося окошка выделите мышкой «Сертификаты», нажмите кнопку «Добавить», затем «OK».
После того как в окне появится список сертификатов, разверните в левой колонке каталог «Доверенные корневые центры сертификации» и удалите найденные в Sigcheck сертификаты.
Где находятся сертификаты в Windows XP?
SystemCertificatesMyCertificates профиля пользователя. Эти сертификаты записываются в локальном реестре при каждом входе в систему компьютера. Для перемещаемых профилей сертификаты обычно хранятся в определенном месте (не на компьютере) и «следуют» за пользователем при его входе в систему любого компьютера в домене.
Android хранит сертификаты CA в своем хранилище ключей Java в /system/etc/security/cacerts.
Посмотреть сертификаты на компьютере через cmd
Частенько появляются вопросы про просмотр хранилищ сертификатов на удалённых компьютерах из PowerShell. Встроенный провайдер CERT: не умеет такого. Командлетов для этой задачи тоже нет (хотя PowerShell вообще не содержит ни одного даже самого примитивного командлета для работы с сертификатами). Как быть и что делать? Ведь MMC умеет ходить по хранилищам удалённых компьютеров. Ответ на самом деле простой до безобразия, но о нём почти ничего не написано.
Как известно для особой работы с хранилищем сертификата (в смысле не только посмотреть, что там есть, но и добавить туда ещё сертификатов) мы используем класс X509Store. Сначала мы создаём соответствующий объект хранилища требуемого контекста (тип хранилища и название контейнера) и методом Open() открываем его. Но в списке конструкторов класса X509Store нет ничего похожего, что бы указывало на возможность указания другого компьютера. Чаще всего используется вот этот: X509Store(String, StoreLocation). В качестве первого параметра как правило указываем название контейнера, а в качестве второго указываем само хранилище — CurrentUser или LocalMachine. Однако, для этого конструктора есть один трюк: если к первому аргументу приписать имя компьютера, мы получим доступ к хранилищу удалённого компьютера и вот как это выглядит:
Примечание: второй аргумент в данном сценарии всегда должен быть LocalMachine, поскольку мы не имеем возможности подключаться к пользовательским хранилищам удалённых компьютеров.
Даже встроенным ремотингом PowerShell’а не нужно заморачиваться. С одной стороны это крутой чит — можно не отходя от кассы доставить сертификатов куда надо. Но тут есть один нюанс. Даже имея права стандартного пользователя можно получить такой доступ, если ремотинг .NET’а не зарезан фиреволом (что внутри периметра мало практикуется) и стащить компьютерный сертификат с закрытым ключом со всеми вытекающими последствиями. Правда, тут стоит оговориться, что стащить удастся только сертификат, у которого закрытый ключ помечен как Exportable. Но, учитывая массовые рекомендации вайтпеперов МСа, в подавляющем случае это будет так. Защититься от этого можно тремя способами (расположены в порядке возрастания стоимости решения):
- Не помечать закрытый ключ компьютерных сертификатов как разрешённый для экспорта;
- Зафиреволить наглухо все серверы в периметре;
- Приобрести для этих серверов HSM (Hardware Security Module).
Первый метод самый дешёвый и простой. Он не требует каких-то специальных знаний от администратора. Второй относительно дешёв, но требует достаточно глубоких знаний от администратора, т.к. некорректно настроенный фиревол может привести к потере удалённого контроля над сервером. А третий прост примерно как и первый способ, но требует определённых капиталовложений (порядка нескольких килобаксов за единицу девайса). Об этом можно дискутировать долго и упорно, моя же задача здесь предельно проста: рассказать как решить задачу и поведать о возможных последствиях 🙂
Categories: PowerShell | Certificates
Posted at: 30.09.2010 23:15 (GMT+3) by Vadims Podāns | Permalink | Comments (0)
Как просмотреть сертификаты текущего пользователя, а не сертификаты локального компьютера, в Windows?
При установке сертификата в Windows вам предоставляется два варианта:
Если я нажму «Далее», я смогу разрешить мастеру импорта сертификатов определить, где его разместить, но означает ли это, что он отменяет мой выбор «Текущий пользователь / локальный компьютер» и вместо этого будет устанавливать его как сертификат локального компьютера?
И он не говорит мне, какое хранилище сертификатов выбрал мастер:
Если я открою диспетчер сертификатов, я смогу увидеть сертификаты, установленные для моего локального компьютера:
Однако я хочу просмотреть сертификаты для текущего пользователя, а не для локальной машины. Я полагаю, что для моего текущего пользователя были установлены плохие сертификаты, которые не позволяют мне получить доступ к Интернету в Google Chrome, Microsoft Edge и других браузерах, но я не могу понять, как просматривать сертификаты текущего пользователя, чтобы удалить их. Firefox — единственный браузер, который работает, потому что он управляет своими собственными сертификатами.
Кто-нибудь знает даже ключ реестра сертификатов HKEY_CURRENT_USER или HKEY_LOCAL_MACHINE (при условии, что раздел реестра локального компьютера достаточно похож на раздел реестра текущего пользователя, чтобы найти первый).