- Как создать самоподписанный сертификат в Windows?
- New-SelfSignedCertificate: командлет PowerShell для генерации самоподписанного сертификата
- Создать самоподписанный сертфикат типа Code Signing для подписывания кода
- Использование самоподписанного SSL сертификата SHA-256 в IIS
- Как сгенерировать запрос на SSL-сертификат для ОС Windows
- Генерация CSR-запроса в IIS 8
- SSL-сертификаты от 550 руб.
- Для создания запроса CSR необходимо:
- Заказ SSL-сертификата в панели управления 1cloud.ru
Как создать самоподписанный сертификат в 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) После заполнения данных сертификата укажите, где сохранить файл запроса.
Секретный ключ сохраняется в системе по умолчанию.
Теперь можно смело заказывать сертификат с созданным запросом – укажите его на втором шаге покупки.
Генерация CSR-запроса в IIS 8
Для того, чтобы получить SSL-сертификат в 1cloud.ru, вам необходимо выполнить два шага: сгенерировать CSR-запрос (Certificate Signing Request) для вашего сайта, а затем заказать SSL-сертификат через панель управления 1cloud.ru.
В этой инструкции описана процедура генерации запроса на подпись сертификата на веб-сервере IIS 8 в Windows Server 2012.
SSL-сертификаты от 550 руб.
- Все доверенные центры сертификации
- Большой выбор сертификатов
- Пошаговые инструкции по выпуску и установке
Для создания запроса CSR необходимо:
- Запустить Диспетчер Серверов (Server Manager), выполнив: Пуск (Start) ->Администрирование (Administrative Tools) ->Диспетчер серверов (Server Manager)
- В меню Средства (Tools) выбрать Диспетчер служб IIS (Internet Information Services Manager).
Примечение: Если оснастка Диспетчер служб IIS отсутствует в вашем Диспетчере Серверов, вам необходимо добавить соответствующую роль на сервер. Для этого в том же Диспетчере серверов откройте меню Управление и выберите пункт Добавить роли и компоненты. В открывшемся окне выберите ваш сервер и установите флажок на роли Веб-сервер (IIS). Далее следуйте подсказкам Мастера Установки.
В панели Подключения (Connections) в левой части окна указать сервер, для которого вы будете генерировать CSR-запрос.
В центральной части окна выбрать Сертификаты сервера (Server Certificates)
- Полное имя (Common Name) — полное доменное имя (FQDN) или URL, для которого планируется использовать сертификат.
Примечание: например, сертификат, выпущенный для адреса. www.mydomain.com не действителен для поддомена subdomain.mydomain.com.
Если вы приобретаете Wildcard-сертификат (сертификат для домена и его поддоменов), указанное здесь доменное имя должно начинаться с символа * (*.mydomain.com). - Организация (Organization) — официальное название организации-владельца сайта.
Для получения сертификатов с валидацией организации (OV-Organization Validation) и сертификатов с расширенной проверкой (EV-Extended Validation) это поле является обязательным и должно содержать имя организации, под которым она официально зарегистрирована.
При заказе сертификата физическим лицом (актуально для SSL-сертификатов c домена(DV-Domain Validation)), в этом поле необходимо указать полное имя владельца сертификата, а в поле Organizational Unit — название вашей площадки или бренда (DBA-Doing Business As), при его наличии. - Подразделение (Organizational Unit) — внутренний отдел/департамент организации («Engineering», «Management»).
- Город (City/Locality) — полное название города, в котором зарегистрирована организация.
- Область/край (State/Province) — полное название области, района, штата, в котором зарегистрирована организация.
- Страна или регион (Country) — двухбуквенный код страны организации-владельца сертификата.
Нажмите Далее (Next). В меню Поставщик средств шифрования (Cryptographic service provider) выберите Microsoft RSA SChannel Cryptographic Provider.
Заказ SSL-сертификата в панели управления 1cloud.ru
Далее необходимо отправить сгенерированный CSR-запрос на подпись в Центр Сертификации через панель управления 1cloud.ru:
- Войдите в панель управления, откройте меню «SSL» и нажмите кнопку «Заказать сертификат».
- Откройте ранее сгенерированный файл CSR-запроса, скопируйте его содержимое в буфер обмена и вставьте его в поле CSR панели управления 1cloud
- Заполните остальные поля по аналогии с приведенным ниже примером и нажмите на кнопку Заказать.
На этом процедура заказа SSL-сертификата завершена. Инструкции по получению заказанного сертификата будут отправлены на ваш адрес электронной почты.
После получения сертификата его необходимо установить на веб-сервер. Для этого вы можете воспользоваться нашей инструкцией по установке SSL-сертификата на IIS 8 (Windows Server 2012).