Как создать pem сертификат windows

Содержание
  1. Пример настройки двухфакторной аутентификации в ОС Windows
  2. 1. Предварительные настройки OpenSSL
  3. 2. Создание и установка корневого сертификата
  4. Создание корневого сертификата
  5. Установка созданного сертификата
  6. 3. Создание и установка сертификата сервера
  7. Создание запроса сертификата
  8. Подписание запроса сертификата
  9. Установка сертификата сервера в IIS
  10. Сохранение сертификата в формате PEM
  11. 4. Настройки параметров подключения
  12. Добавление https привязки
  13. Параметры SSL
  14. Настройка параметров подключения
  15. 5. Создание сертификата клиента
  16. Создание запроса сертификата клиента
  17. Подписание запроса сертификата
  18. Сохранение сертификата в контейнере
  19. 6. Привязка сертификата к пользователю
  20. 7. Проверка работы сертификатов
  21. Установка сертификата от Windows Server CA на веб-сервер Apache
  22. Как создать самоподписанный сертификат в Windows?
  23. New-SelfSignedCertificate: командлет PowerShell для генерации самоподписанного сертификата
  24. Создать самоподписанный сертфикат типа Code Signing для подписывания кода
  25. Использование самоподписанного SSL сертификата SHA-256 в IIS

Пример настройки двухфакторной аутентификации в ОС Windows

В приведенном ниже примере используется последняя версия OpenSSL для ОС Windows. Предполагается использование конфигурации с сервером безопасности, настроенном на веб-сервере IIS. В примере продемонстрированы шаги для создания трех сертификатов:

корневой сертификат — используется для подписи других сертификатов;

сертификат сервера — используется сервером для проверки сертификатов пользователей;

сертификат клиента — предоставляется пользователем для проверки на сервере.

Для настройки двухфакторной аутентификации необходимо выполнить все этапы данной инструкции.

1. Предварительные настройки OpenSSL

Для выполнения примера были заданы следующие предварительные настройки OpenSSL:

В файле конфигурации openssl.cnf изменен параметр « dir » внутри поля [CA_default] на « C:/iis ». Файл openssl.cnf расположен в папке «S\bin\cnf\», где S — путь до места установки OpenSSL, например, «C:\Program Files\OpenSSL-Win64\bin\cnf\».

Создана папка « C:\iis » и « C:\iis\newcerts ».

В папке « C:\iis » создано два файла: пустой « index.txt » и файл без расширения « serial », содержащий значение « 01 ».

2. Создание и установка корневого сертификата

Корневой сертификат необходим для подписания сертификата клиента и сервера.

Создание корневого сертификата

Для создания корневого сертификата:

Перейдем в директорию с установленным OpenSSL с помощью командной строки:

cd C:\Program Files\OpenSSL-Win64

openssl req -new -x509 -days 1000 -out c:\iis\ca.crt -keyout c:\iis\ca.key -config .\bin\cnf\openssl.cnf

При выполнении команды будут запрошены дополнительные данные: PEM пароль и пользовательские данные о владельце сертификата.

Совет . При необходимости можно поменять срок действия сертификата в команде или в настройках OpenSSL по умолчанию.

Установка созданного сертификата

Созданный сертификат необходимо установить в хранилище доверенных центров:

Вызовем консоль управления, выполнив (горячая клавиша WIN+R) команду « mmc ».

Добавим (горячая клавиша CTRL+M) оснастку сертификаты для учетной записи локального компьютера.

Импортируем, ранее созданный сертификат, в папку « Доверенные корневые центры сертификации > Сертификаты »:

3. Создание и установка сертификата сервера

Сертификат сервера используется веб-сервером IIS для проверки подлинности сертификатов клиентов, для создания и подписания сертификата сервера выполните следующие шаги:

Создание запроса сертификата

В диспетчере служб IIS перейдем на страницу настройки сертификатов, нажав кнопку « Сертификаты сервера ».

Выполним команду « Создать запрос сертификата » контекстного меню или боковой панели.

Заполним поля о пользователе сертификата.

При запросе имени файла сохраним запрос в папке « C:\iis » под именем « server.csr ».

Подписание запроса сертификата

Созданный запрос необходимо подписать корневым сертификатом. Откроем консоль OpenSSL и введем команду:

openssl ca -days 1000 -policy policy_anything -keyfile c:\iis\ca.key -cert c:\iis\ca.crt -in c:\iis\server.csr -out c:\iis\server.cer -config openssl.cnf

При выполнении команды будет получен запрос PEM пароля и уточняющие вопросы. После введения данных будет создан сертификат.

Установка сертификата сервера в IIS

Подписанный файл сертификата сервера необходимо установить на веб-сервер IIS:

В диспетчере служб IIS перейдем на страницу настройки сертификатов, нажав кнопку « Сертификаты сервера ».

Читайте также:  Не удалось запустить windows возможно конфигурации

Выполним команду « Запрос установки сертификата » контекстного меню или боковой панели.

Укажем путь до подписанного сертификата « C:\iis\server.cer ».

В результате на веб-сервер IIS будет установлен подписанный сертификат сервера.

Сохранение сертификата в формате PEM

Сохранение сертификата server.cer в формате PEM необходимо в том случае, если выполняется настройка входа через OAuth, при которой используется утилита PP.Util для сохранения сгенерированного сертификата в репозиторий. Откроем консоль OpenSSL и введем команду:

openssl x509 -in c:\iis\server.cer -out c:\iis\server.pem

После выполнения команды сертификат будет сохранен в формате PEM и доступен для использования утилитой PP.Util.

4. Настройки параметров подключения

Добавление https привязки

В диспетчере служб IIS перейдем на страницу сайта, например « Default Web Site ».

Выполним команду « Привязки » контекстного меню или боковой панели.

Добавим новую привязку: в поле Тип укажем « https », в выпадающем списке укажем созданный ранее сертификат сервера.

Параметры SSL

Включим параметры SSL для используемого веб-сайта/приложения:

В диспетчере служб IIS перейдем на страницу настройки параметров SSL, нажав кнопку « Параметры SSL ».

Установим флажок « Требовать SSL » и переключатель « Требовать сертификат клиента ».

Настройка параметров подключения

При двухфакторной аутентификации для подключения к веб-сервису используется протокол https.

В настройках подключения пользователя к серверу безопасности необходимо указать адрес до веб-сервиса с учетом защищенного протокола:

https:// / fp SS_App_v9.2×64/axis2/services/PP.SOM.SomSec

При использовании BI-сервера совместно с сервером безопасности необходимо задать https соединение на всех этапах.

5. Создание сертификата клиента

Создание запроса сертификата клиента

Для создания запроса в консоли OpenSSL введем команду:

openssl req -new -days 1000 -keyout c:\iis\client.key -out c:\iis\client.csr -config openssl.cnf

При выполнении команды будет предложено задать PEM пароль и дополнительную информацию и владельце сертификата.

После введения всех данных будет создан ключ и запрос на сертификат клиента.

Подписание запроса сертификата

Созданный запрос необходимо подписать корневым сертификатом. Откроем консоль OpenSSL и введем команду:

openssl ca -days 1000 -policy policy_anything -keyfile c:\iis\ca.key -cert c:\iis\ca.crt -in c:\iis\client.csr -out c:\iis\client.cer -config openssl.cnf

При выполнении команды будет получен запрос PEM пароля и уточняющие вопросы. После введения данных будет создан сертификат.

Сохранение сертификата в контейнере

Для возможности импортировать сертификат в хранилище сертификатов вместе с ключом, необходимо конвертировать сертификат с ключом в контейнер *.pfx.

Введем в консоли OpenSSL команду:

openssl pkcs12 -export -inkey c:\iis\client.key -in c:\iis\client.crt -out c:\iis\client.pfx

При выполнении команды будет получен запрос PEM пароля.

После создания контейнера его необходимо передать на компьютер клиента и импортировать в хранилище сертификатов.

6. Привязка сертификата к пользователю

Привязка сертификата к конкретному пользователю производится на вкладке «Общие свойства» в свойствах пользователя:

Выполним команду « Из файла » раскрывающегося меню кнопки « Добавить » и укажем созданный для клиента сертификат.

В результате доступ пользователя к репозиторию будет разрешен только при предъявлении сертификата пользователя.

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

Перед проверкой работы сертификатов перезагрузим веб-сервер IIS.

Для проверки работы запросов сертификатов проверим доступ к веб-сервису сервера безопасности. В браузере перейдем по адресу:

https:// / fp SS_App_v9.2×64/axis2/services

При корректной настройке будет показано окно выбора сертификата для аутентификации на сайте.

Если сертификат был указан корректно, будет отображена страница с доступными операциям веб-сервиса.

Установка сертификата от Windows Server CA на веб-сервер Apache

Рассмотрим пример установки цифрового сертификата X509 на веб-сервер Apache, выданного локальным корневым Центром сертификации, работающим на Windows Server 2008. Пошагово решение задачи состоит из нескольких последовательных шагов:

  • Генерация запроса на сертификат средствами OpenSSL к ЦС Windows;
  • Получение от ЦС файла сертификата (.cer) в формате DER X509
  • Конвертация полученного сертификата в .pem и прикручивание оного к веб-серверу Apache
Читайте также:  За что любят linux

Для того чтобы создать запрос к ЦС Windows нам понадобиться OpenSSL, а именно конкретно 3 файла из его состава — openssl.exe , ssleay32.dll , libeay32.dll . Сложим их в один каталог, например в каталог \Documents в профиле пользователя. Далее создаем закрытый ключ:

После этого в нашем каталоге появиться файл с ключом. Далее с использованием этого файла мы подготовим запрос к ЦС. Но для этого подготовим конфигурационный файл для OpenSSL, чтобы он не задавал нам лишних вопросов. Итак создаем текстовый файл my_openssl.cnf со следующим содержимым:

Как вы понимаете, в этом файле мы указываем параметры, которые нужны для идентификации запроса сертификата в ЦС, т.е. указываем имя сервера которому требуется сертификат, имя организации и т.п..

Далее создаем запрос на сертификат с учётом подготовленных ранее параметров:

Полученный файл запроса APACHE-SERVER.req загружаем в центр сертификации Windows Server, в ЦС выдаем сертификат на загруженный запрос. Выгружаем из ЦС новый сертификат в файл APACHE-SERVER.cer . Теперь наша задача — конвертировать наш бинарный DER сертификат в формат, понятный для Apache, и делаем мы это так:

Всё, что нам нужно — готово, а именно файлы key и pem . Делаем соответствующие изменения в файле конфигурации сервера Apache — httpd.conf — вписываем туда ссылки на наш сертификат:

После чего перезапускаем сервис Apache2, и если всё сделали правильно, то при обращении на веб-узел увидим, что Apache использует наш сертификат.

Как создать самоподписанный сертификат в 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 хранилища сертификатов компьютера появился новый сертификат.

Читайте также:  Что за процесс windows modules installer worker грузит диск

С помощью командлета 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, выберите созданный вами сертификат и сохраните изменения.

Оцените статью