Cертификаты, Windows и немного PowerShell

Cертификаты, Windows и немного PowerShell

Сертификат – это контейнер для открытого ключа. Он включает в себя такую информацию как значение открытого ключа, имя сервера или пользователя, некоторую дополнительную информацию о сервере или пользователе, а также содержит электронную подпись, сформированную издающим центром сертификации (ЦС). Ранее мы уже писали о работе с сертификатами pfx с помощью openssl, теперь рассмотрим использование встроенных средств, а именно powershell.

Что такое сертификат PFX

Файл .pfx, который не следует путать с .cer, представляет собой архив PKCS#12; это пакет, который может содержать несколько объектов с дополнительной защитой паролем. Обычно он содержит сертификат (возможно, со своим набором цепочки сертификатов верхнеуровневых УЦ) и соответствующий закрытый ключ. В то время как PFX может содержать в себе несколько сертификатов, файл .cer содержит один единственный сертификат без пароля и закрытого ключа. В Windows все сертификаты находятся в логических местах хранения, называемых хранилищами сертификатов.

Одним из самых распространенных областей применения pfx сертификатов является подпись кода (code signing). Также, в случае защиты надежным паролем pfx можно передавать по открытым каналам связи.

Логические хранилища

Логические хранилища – это виртуальные месторасположения, в которых которых локально храняться сертификаты как для пользователя так и для компьютера. Powershell использует Cert PSDrive для сопоставления сертификатов с физическими хранилищами. Наименование логических хранилищ Certificates Microsoft Management Console (MMC) отличается от маркировки хранилища Cert PSDrive. В таблице ниже показано сравнение между ними:

CERT:CERTIFICATES MMC
MyЛичные
Remote DesktopУдаленный рабочий стол
RootДоверенные корневые центры сертификации
CAПромежуточные центры сертификации
AuthRootСторонние корневые центры сертификации
TrustedPublisherДоверенные издатели
TrustДоверительные отношения в предприятии
UserDSОбъект пользователя Active Directory

Модуль PKI

Утилита MakeCert.exe, входящая в состав Microsoft .NET Framework SDK и Microsoft Windows SDK, используется для создания самоподписанного сертификата. В системе, где не установлен Windows SDK, для управления сертификатами используются команды модуля Powershell PKI.

Чтобы перечислить все команды, доступные в модуле PKI, выполните следующую команду:

Get-Command -Module PKI

Командлеты, используемые в этой статье, описаны ниже:

Export-PfxCertificate

Командлет Export-PfxCertificate экспортирует сертификат или объект PFXData в файл Personal Information Exchange (PFX). По умолчанию экспортируются расширенные свойства и вся цепочка.

Get-Certificate

КомандлетGet-Certificate можно использовать для отправки запроса на сертификат и установки полученного сертификата, установки сертификата из запроса на сертификат, а также для регистрации в службе каталогов протокола LDAP.

Get-PfxData

Командлет Get-PfxData извлекает содержимое файла Personal Information Exchange (PFX) в структуру, содержащую сертификат конечного субъекта, любые промежуточные и корневые сертификаты.

Import-PfxCertificate

КомандлетImport-PfxCertificate импортирует сертификаты и закрытые ключи из файла PFX в локальное хранилище.

New-SelfSignedCertificate

Командлет New-SelfSignedCertificate создает самоподписанный сертификат. С помощью параметра CloneCert указанный сертификат может быть создан на основе существующего сертификата с копированием всех параметров из оригинального сертификата, за исключением открытого ключа.

Поиск и выбор сертификата

В Powershell Cert: PSDrive используется для вывода списка сертификатов в определенном хранилище. Чтобы вывести оба хранилища в Cert: PSDrive, выполните следующую команду:

Get-ChildItem -Path Cert:

Будут показаны месторасположения сертификатов для CurrentUser и LocalMachine. Чтобы перечислить сертификаты для доверенных корневых центров сертификации LocalMachine, выполните следующую команду:

Get-ChildItem -Path Cert:\LocalMachine\Root\

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