Сертификат – это контейнер для открытого ключа. Он включает в себя такую информацию как значение открытого ключа, имя сервера или пользователя, некоторую дополнительную информацию о сервере или пользователе, а также содержит электронную подпись, сформированную издающим центром сертификации (ЦС). Ранее мы уже писали о работе с сертификатами 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\
Возвращаемый объект будет представлять собой сертификаты, которые можно изменить, удалить или экспортировать.