- Как создать самоподписанный сертификат в Windows?
- New-SelfSignedCertificate: командлет PowerShell для генерации самоподписанного сертификата
- Создать самоподписанный сертфикат типа Code Signing для подписывания кода
- Использование самоподписанного SSL сертификата SHA-256 в IIS
- Как сгенерировать запрос на SSL-сертификат для ОС Windows
- Необязательно: создание сертификата подписи кода для Защитник Windows application Control Optional: Create a code signing cert for Windows Defender Application Control
Как создать самоподписанный сертификат в Windows?
Большинству администраторов Windows, знакомых с темой PKI, известна утилита MakeCert.exe, с помощью которой можно создать самоподписанный сертификат. Эта утилита включена в состав Microsoft .NET Framework SDK и Microsoft Windows SDK. В современых версиях Windows 10/8.1 и Windows Server 2016/2012R2 вы можете создать самоподписанный сертификат с помощью PowerShell без использования дополнительных утилит.
New-SelfSignedCertificate: командлет PowerShell для генерации самоподписанного сертификата
Для создания самоподписанного сертификата в PowerShell нужно использовать командлет New-SelfSignedCertificate, входящий в состав модуля PKI (Public Key Infrastructure).
Чтобы вывести список всех доступных командлетов в модуле PKI, выполните команду:
Get-Command -Module PKI
Самоподписанные сертификаты рекомендуется использовать в тестовых целях или для обеспечения сертификатами внутренних интранет служб (IIS, Exchange, Web Application Proxy, LDAPS, ADRMS, DirectAccess и т.п.), в тех случая когда по какой-то причине приобретение сертификата у внешнего провайдера или разворачивание инфраструктуры PKI/CA невозможны.
Для создания сертификата нужно указать значения –DnsName (DNS имя сервера, имя может быть произвольным и отличаться от имени localhost) и —CertStoreLocation (раздел локального хранилища сертификатов, в который будет помещен сгенерированный сертификат). Командлет можно использовать для создания самоподписанного сертификата в Windows 10 (в нашем примере), Windows 8/8.1 и Windows Server 2019/2016/2012 R2.
Чтобы создать новый SSL сертификат типа SSLServerAuthentication (по умолчанию) для DNS имени test.contoso.com (указывается FQDN имя) и поместить его в список персональных сертификатов компьютера, выполните команду:
New-SelfSignedCertificate -DnsName test.contoso.com -CertStoreLocation cert:\LocalMachine\My
Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint Subject
———- ——-
2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 CN=test.contoso.com
Если вы указали нестандартный криптографический провайдер CSPs (например, с помощью параметров -KeyAlgorithm «ECDSA_secP256r1» -Provider ‘Microsoft Smart Card Key Storage Provider’ ), убедитесь, что он установлен на компьютере (по умолчанию используется CSP Microsoft Enhanced Cryptographic Provider). Иначе появится ошибка:
По-умолчанию генерируется самоподписанный сертификат со следующим параметрами:
- Криптографический алгоритм: RSA;
- Размер ключа: 2048 бит;
- Допустимые варианты использования ключа: Client Authentication и Server Authentication;
- Сертификат может использоваться для: Digital Signature, Key Encipherment ;
- Срок действия сертификата: 1 год.
Данная команда создаст новый сертификат и импортирует его в персональное хранилище компьютера. Откройте оснастку certlm.msc и проверьте, что в разделе Personal хранилища сертификатов компьютера появился новый сертификат.
С помощью командлета Get-ChildItem можно вывести все параметры созданного сертификата по его отпечатку (Thumbprint):
Get-ChildItem -Path «Cert:\LocalMachine\My» | Where-Object Thumbprint -eq DC1A0FDE0120085A45D8E14F870148D1EBCB82AE | Select-Object *
$todaydate = Get-Date
$add3year = $todaydate.AddYears(3)
New-SelfSignedCertificate -dnsname test.contoso.com -notafter $add3year -CertStoreLocation cert:\LocalMachine\My
Можно создать цепочку сертфикатов. Сначала создается корневой сертификат (CA), а на основании него генерируется SSL сертификат сервера:
$rootCert = New-SelfSignedCertificate -Subject «CN=TestRootCA,O=TestRootCA,OU=TestRootCA» -KeyExportPolicy Exportable -KeyUsage CertSign,CRLSign,DigitalSignature -KeyLength 2048 -KeyUsageProperty All -KeyAlgorithm ‘RSA’ -HashAlgorithm ‘SHA256’ -Provider «Microsoft Enhanced RSA and AES Cryptographic Provider» `
New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName «test2.contoso.com» -Signer $rootCert -KeyUsage KeyEncipherment,DigitalSignature
Для экспорта полученного сертификата c закрытым ключом в pfx файл, защищенный паролем, нужно получить его отпечаток (Thumbprint). Сначала нужно указать пароль защиты сертификата и преобразовать его в формат SecureString. Значение Thumbprint нужно скопировать из результатов выполнения команды New-SelfSignedCertificate.
$CertPassword = ConvertTo-SecureString -String “YourPassword” -Force –AsPlainText
Export-PfxCertificate -Cert cert:\LocalMachine\My\2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:\test.pfx -Password $CertPassword
Можно экспортировать открытый ключ сертификата:
Export-Certificate -Cert Cert:\LocalMachine\My\2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:\testcert.cer
Проверьте, что в указанном каталоге появился cer(PFX)файл сертификата. Если щелкнуть по нему правой клавишей и выбрать пункт меню Install Certificate, можно с помощью мастера импорта сертификатов добавить сертификат в корневые доверенные сертификаты компьютера.
Выберите Store location -> Local Machine, Place all certificates in the following store -> Trusted Root Certification Authorities.
Полученный открытый ключ или сам файл сертификата можно распространить на все компьютеры и сервера в домене с помощью GPO (пример установки сертификата на компьютеры с помощью групповых политик).
Одной из полезных возможностей командлета New-SelfSignedCertificate является возможность создать сертификат с несколькими различными именами Subject Alternative Names (SAN).
Если создается сертификат с несколькими именами, первое имя в параметре DnsName будет использоваться в качестве CN (Common Name) сертификата. К примеру, создадим сертификат, у которого указаны следующие имена:
- Subject Name (CN): adfs1.contoso.com
- Subject Alternative Name (DNS): web-gw.contoso.com
- Subject Alternative Name (DNS): enterprise-reg.contoso.com
Команда создания сертификата будет такой:
New-SelfSignedCertificate -DnsName adfs1.contoso.com,web_gw.contoso.com,enterprise_reg.contoso.com -CertStoreLocation cert:\LocalMachine\My
Также можно сгенерировать wildcard сертификат для всего пространства имен домена, для этого в качестве имени сервера указывается *.contoso.com.
New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname *.contoso.com
Создать самоподписанный сертфикат типа Code Signing для подписывания кода
В PoweShell 3.0 командлет New-SelfSifgnedCertificate позволял генерировать только SSL сертификаты, которые нельзя было использоваться для подписывания кода драйверов и приложений (в отличии сертификатов, генерируемых утилитой MakeCert).
В версии PowerShell 5 новая версия командлета New-SelfSifgnedCertificate теперь может использоваться для выпуска сертификатов типа Code Signing.
Для создания самоподписанного сертфиката для подписывания кода приложений, выполните команду:
$cert = New-SelfSignedCertificate -Subject «Cert for Code Signing” -Type CodeSigningCert -CertStoreLocation cert:\LocalMachine\My
Set-AuthenticodeSignature -FilePath C:\PS\test_script.ps1 -Certificate $cert
Если при выполнении команды появится предупреждение UnknownError, значит этот сертификат недоверенный, т.к. находится в персональном хранилище сертификатов пользователя.
Move-Item -Path $cert.PSPath -Destination «Cert:\CurrentUser\Root»
После этого вы можете подписать свой PowerShell скрипт с помощью данного самоподписанного сертификата.
Использование самоподписанного SSL сертификата SHA-256 в IIS
Обратите внимание, что при создании самоподписанный сертификат для IIS через консоль Internet Information Manager (пункт меню Create Self-Signed Certificate), создается сертификат с исопльзованием алгоритма шифрования SHA-1. Такие сертификаты многими браузерами считаются недоверенными, поэтому они могут выдавать предубеждение. Командлет New-SelfSignedCertificate позволяет создать более популырный тип сертификата с помощью алгоритма шифрования SHA-256.
Вы можете привязать самоподписанный сертификат SHA-256, созданный в PowerShell, к сайту IIS. Если вы с помощью PowerShell создали SSL сертификат и поместили его в хранилище сертификатов компьютера, он будет автоматически доступен для сайтов IIS.
Запустите консоль IIS Manager, выберите ваш сайт, затем в настройке Site Binding, выберите созданный вами сертификат и сохраните изменения.
Как сгенерировать запрос на SSL-сертификат для ОС Windows
Рассмотрим создание CSR запроса на примере 2012 Standard. Оно состоит из нескольких простых шагов:
1) Перейдите в диспетчер IIS (Internet Information Services Manager) из меню Пуск – Администрирование.
2) Выберите сервер, в списке кликните по сертификатам.
3) В меню справа выберите «Создать запрос сертификата».
Система предложит заполнить необходимые данные, выбрать длину ключа шифрования.
Windows предупреждает: чем больше длина ключа, тем надежней зашифрованы данные. Однако и нагрузка на процессор возрастает – увеличивается время на обработку запросов.
4) После заполнения данных сертификата укажите, где сохранить файл запроса.
Секретный ключ сохраняется в системе по умолчанию.
Теперь можно смело заказывать сертификат с созданным запросом – укажите его на втором шаге покупки.
Необязательно: создание сертификата подписи кода для Защитник Windows application Control Optional: Create a code signing cert for Windows Defender Application Control
Относится к: Applies to:
- Windows 10 Windows 10
- Windows Server 2016 Windows Server 2016
При развертывании Защитник Windows управления приложениями (WDAC) может потребоваться подписать файлы каталога или политики WDAC внутри организации. As you deploy Windows Defender Application Control (WDAC), you might need to sign catalog files or WDAC policies internally. Для этого вам потребуется выданный сертификат подписи кода или внутренний центр сертификации. To do this, you will either need a publicly issued code signing certificate or an internal CA. Если вы приобрели сертификат подписи кода, вы можете пропустить этот раздел и перейти к другим разделам, указанным в руководстве по развертыванию Защитник Windows управления приложениями. If you have purchased a code signing certificate, you can skip this topic and instead follow other topics listed in the Windows Defender Application Control Deployment Guide.
Если у вас есть внутренний центр сертификации, выполните следующие действия, чтобы создать сертификат подписи кода. If you have an internal CA, complete these steps to create a code signing certificate. Для сертификата подписи кода поддерживается только алгоритм RSA, а подписи должны быть заполнены по стандарту 1.5 PKCS. Only RSA algorithm is supported for the code signing certificate, and signatures must be PKCS 1.5 padded. Алгоритм ECDSA не поддерживается. ECDSA is not supported.
Откройте оснастку консоли управления MMC ЦС и выберите ваш центр сертификации, выдающий сертификаты подписи. Open the Certification Authority Microsoft Management Console (MMC) snap-in, and then select your issuing CA.
Выполнив подключение, щелкните правой кнопкой мыши Шаблоны сертификатови выберите Управление, чтобы открыть консоль шаблонов сертификации. When connected, right-click Certificate Templates, and then click Manage to open the Certification Templates Console.
Рис. 1. Figure 1. Управление шаблонами сертификатов Manage the certificate templates
В области навигации щелкните правой кнопкой мыши «Сертификат подписи кода» и выберите Скопировать шаблон. In the navigation pane, right-click the Code Signing certificate, and then click Duplicate Template.
На вкладке Совместимость снимите флажок Показать последующие изменения . On the Compatibility tab, clear the Show resulting changes check box. Выберите Windows Server 2012 в списке Центр сертификации , а затем выберите Windows 8 / Windows Server 2012 в списке Получатель сертификата . Select Windows Server 2012 from the Certification Authority list, and then select Windows 8 / Windows Server 2012 from the Certificate recipient list.
На вкладке Общие укажите Отображаемое имя шаблона и Имя шаблона. On the General tab, specify the Template display name and Template name. В этом примере используется имя Сертификат подписи каталога WDAC. This example uses the name WDAC Catalog Signing Certificate.
На вкладке Обработка запроса установите флажок Разрешить экспортировать закрытый ключ. On the Request Handling tab, select the Allow private key to be exported check box.
На вкладке Расширения установите флажок Основные ограничения и щелкните Изменить. On the Extensions tab, select the Basic Constraints check box, and then click Edit.
В диалоговом окне Расширение «Изменение основных ограничений» установите флажок Включить это расширение, как показано на рисунке 2. In the Edit Basic Constraints Extension dialog box, select Enable this extension, as shown in Figure 2.
Рис. 2. Figure 2. Выберите ограничения для нового шаблона Select constraints on the new template
Если для утверждения выданных сертификатов требуется диспетчер сертификатов, установите флажок Одобрения диспетчера сертификатов ЦС на вкладке Требования выдачи. If a certificate manager is required to approve any issued certificates, on the Issuance Requirements tab, select CA certificate manager approval.
На вкладке Имя субъекта выберите Предоставляется в запросе. On the Subject Name tab, select Supply in the request.
На вкладке Безопасность убедитесь, что все учетные записи, которые будут использоваться для запроса сертификата, имеют право на регистрацию сертификата. On the Security tab, verify that whatever account will be used to request the certificate has the right to enroll the certificate.
Щелкните в ОК , чтобы создать шаблон, и закройте консоль шаблонов сертификатов. Click OK to create the template, and then close the Certificate Template Console.
После создания шаблона сертификата необходимо опубликовать его в хранилище опубликованных шаблонов центра сертификации. When this certificate template has been created, you must publish it to the CA published template store. Для этого необходимо выполнить описанные ниже действия. To do so, complete the following steps:
В оснастке MMC центра сертификации щелкните правой кнопкой мыши Шаблоны сертификации, наведите указатель на пункт Создать, а затем нажмите Выдаваемый шаблон сертификата, как показано на рисунке 3. In the Certification Authority MMC snap-in, right-click Certification Templates, point to New, and then click Certificate Template to Issue, as shown in Figure 3.
Рис. 3. Figure 3. Выбор нового выдаваемого шаблона сертификата Select the new certificate template to issue
Появится список доступных выдаваемых шаблонов, включая только что созданный шаблон. A list of available templates to issue appears, including the template you just created.
Выберите сертификат подписи каталога WDAC и нажмите кнопку ОК. Select the WDAC Catalog signing certificate, and then click OK.
Как только шаблон станет доступным для выдачи, вам необходимо запросить его с компьютера под управлением Windows 10, на котором следует создать и подписать файлы каталога. Now that the template is available to be issued, you must request one from the computer running Windows 10 on which you create and sign catalog files. Откройте консоль MMC и выполните описанные ниже действия. To begin, open the MMC, and then complete the following steps:
На консоли управления (MMC) в меню Файл щелкните Добавить или удалить оснастку. In MMC, from the File menu, click Add/Remove Snap-in. Дважды щелкните Сертификатыи выберите Моя учетная запись пользователя. Double-click Certificates, and then select My user account.
В оснастке сертификатов щелкните правой кнопкой мыши папку «Личное хранилище», наведите указатель на пункт Все задачии выберите Запросить новый сертификат. In the Certificates snap-in, right-click the Personal store folder, point to All Tasks, and then click Request New Certificate.
Дважды щелкните Далее , чтобы открыть список выбора сертификата. Click Next twice to get to the certificate selection list.
В списке Запросить сертификат выберите только что созданный сертификат подписи, а затем щелкните голубую надпись, предлагающую ознакомиться с дополнительными сведениями (см. рис. 4). In the Request Certificate list, select your newly created code signing certificate, and then select the blue text that requests additional information, as shown in Figure 4.
Рис. 4. Figure 4. Получение дополнительных сведений о сертификате подписи кода Get more information for your code signing certificate
В диалоговом окне Свойства сертификата для параметра Типвыберите значение Общее имя. In the Certificate Properties dialog box, for Type, select Common name. Для параметра Значениеукажите ContosoDGSigningCert, а затем щелкните Добавить. For Value, select ContosoDGSigningCert, and then click Add. Добавив элемент, нажмите кнопку ОК When added, click OK.
В завершение выполните регистрацию. Enroll and finish.
Если для утверждения выданных сертификатов требуется диспетчер сертификатов и вы выбрали утверждение управления шаблоном, запрос должен быть утвержден в ЦС, прежде чем он будет выдан клиенту. If a certificate manager is required to approve any issued certificates and you selected to require management approval on the template, the request will need to be approved in the CA before it will be issued to the client.
Этот сертификат должен быть установлен в личном хранилище пользователя на компьютере, который будет подписывать файлы каталога и политики целостности кода. This certificate must be installed in the user’s personal store on the computer that will be signing the catalog files and code integrity policies. Если подписание будет выполняться на компьютере, с которого вы только что запросили сертификат, экспорт сертификата в PFX-файл не потребуется, поскольку такой файл уже существует в вашем личном хранилище. If the signing is going to be taking place on the computer on which you just requested the certificate, exporting the certificate to a .pfx file will not be required because it already exists in your personal store. Если вы выполняете подписывание на другом компьютере, вам необходимо будет экспортировать сертификат PFX с необходимыми ключами и свойствами. If you are signing on another computer, you will need to export the .pfx certificate with the necessary keys and properties. Для этого необходимо выполнить описанные ниже действия. To do so, complete the following steps:
Щелкните правой кнопкой мыши сертификат, наведите указатель на пункт Все задачии выберите Экспорт. Right-click the certificate, point to All Tasks, and then click Export.
Щелкните Далее, а затем выберите Да, экспортировать закрытый ключ. Click Next, and then select Yes, export the private key.
Выберите параметры по умолчанию, а затем выберите Экспортировать все расширенные свойства. Choose the default settings, and then select Export all extended properties.
Задайте пароль, выберите путь для экспорта, а затем укажите в качестве имени файла WDACCatSigningCert.pfx . Set a password, select an export path, and then select WDACCatSigningCert.pfx as the file name.
Если сертификат был экспортирован, импортируйте его в личное хранилище для пользователя, который будет подписывать файлы каталога или политики целостности кода, на конкретном компьютере, который их будет подписывать. When the certificate has been exported, import it into the personal store for the user who will be signing the catalog files or code integrity policies on the specific computer that will be signing them.