Самоподписанный сертификат ssl как сгенерировать windows

Обновлено: 07.07.2024

В SKU Шлюза приложений версии 2 используются доверенные корневые сертификаты для поддержки внутренних серверов. То есть сертификаты аутентификации, которые были необходимы в SKU версии 1, больше не нужны. Корневой сертификат — это закодированный в Base64 корневой сертификат формата X.509(.CER) из внутреннего сервера сертификатов. Он определяет корневой центр сертификации (ЦС), выдавший сертификат сервера. Затем сертификат сервера используется для обмена данными по протоколу TLS/SSL.

Шлюз приложений доверяет сертификату вашего веб-сайта по умолчанию, если он подписан известным центром сертификации (например, GoDaddy или DigiCert). В этом случае вам не нужно явно загружать корневой сертификат. Дополнительные сведения см. в статье Общие сведения о завершении TLS и сквозном подключении TLS с помощью Шлюза приложений. Но если у вас есть среда разработки и/или тестирования и вы не хотите приобретать проверенный сертификат, подписанный центром сертификации, можно создать собственный пользовательский ЦС и создать самозаверяющий сертификат.

Самозаверяющие сертификаты не являются доверенными по умолчанию и могут быть сложными в обслуживании. Кроме того, они могут использовать устаревшие хэши и комплекты шифров, которые могут быть ненадежными. Для повышения безопасности приобретите сертификат, подписанный известным центром сертификации.

В этой статье раскрываются следующие темы:

  • создание пользовательского центра сертификации;
  • создание самозаверяющего сертификата, подписанного пользовательским центром сертификации;
  • передача самозаверяющего корневого сертификата в Шлюз приложений для аутентификации внутреннего сервера.

Предварительные требования

OpenSSL на компьютере под управлением Windows или Linux.

Хотя для управления сертификатами могут быть доступны и другие инструменты, в этом учебнике используется OpenSSL. OpenSSL поставляется со многими дистрибутивами Linux, например Ubuntu.

Веб-сервер.

Например, Apache, IIS или NGINX для тестирования сертификатов.

SKU Шлюза приложений версии 2.

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

Создайте сертификат корневого ЦС с помощью OpenSSL.

Создание корневого ключа

Войдите на компьютер, где установлен OpenSSL, и выполните следующую команду. Будет создан зашифрованный ключ.

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

Используйте следующие команды для создания запроса на подпись сертификата (CSR) и сертификата.

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

При появлении запроса введите пароль для корневого ключа и сведения об организации для пользовательского ЦС, такие как страна или регион, штат, организация, подразделение и полное доменное имя (домен издателя).

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

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

Далее предстоит создать сертификат сервера с помощью OpenSSL.

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

Используйте следующую команду, чтобы создать ключ для сертификата сервера.

Создание запроса на подпись сертификата (CSR)

CSR — это открытый ключ, предоставляемый ЦС при запросе сертификата. ЦС выдает сертификат для этого конкретного запроса.

Используйте следующую команду, чтобы создать CSR:

При появлении запроса введите пароль для корневого ключа и сведения об организации для пользовательского ЦС: страна или регион, штат, организация, подразделение и полное доменное имя. Это домен веб-сайта — он должен отличаться от издателя.

Сертификат сервера

Создание сертификата с использованием CSR и ключа, а также подписывание сертификата с помощью корневого ключа ЦС

Используйте следующую команду, чтобы создать сертификат:

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

Используйте следующую команду, чтобы напечатать выходные данные CRT-файла и проверить его содержимое:

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

Проверьте свой каталог и убедитесь, что в нем есть следующие файлы:

  • contoso.crt;
  • contoso.key;
  • fabrikam.crt;
  • fabrikam.key.

Настройка сертификата в параметрах TLS веб-сервера

На веб-сервере настройте TLS с помощью файлов fabrikam.crt и brikam.key. Если веб-сервер не может принять два файла, их можно объединить в один файл PEM или PFX с помощью команд OpenSSL.

Инструкции по импорту сертификата и его передаче в качестве сертификата сервера в службах IIS см. в статье Практическое руководство. Импорт и установка сертификата на веб-сервере в Windows Server 2003.

Инструкции по привязке TLS см. в статье Как настроить SSL для IIS 7.

Apache

Ниже приведен пример конфигурации виртуального узла, настроенного для SSL в Apache:

NGINX

Ниже приведен пример конфигурации серверного блока NGINX с конфигурацией TLS:

NGINX с использованием TLS

Доступ к серверу для проверки конфигурации

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

Доверенные корневые сертификаты

Перейдите на свой веб-сайт и щелкните значок замка в поле адреса браузера, чтобы проверить сведения о сайте и сертификате.

Проверка конфигурации с помощью OpenSSL

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

Проверка сертификата с помощью OpenSSL

Чтобы передать сертификат в Шлюз приложений, необходимо экспортировать CRT-сертификат в формат CER с кодировкой Base-64. Поскольку CRT-файл уже содержит открытый ключ в формате Base-64, просто измените расширение файла с CRT на CER.

Портал Azure

Добавление сертификата с помощью портала

Azure PowerShell

Для отправки корневого сертификата можно также использовать Azure CLI или Azure PowerShell. Следующий код является примером для Azure PowerShell.

date

02.11.2020

directory

PowerShell, Windows 10, Windows Server 2016

comments

комментариев 7

New-SelfSignedCertificate: командлет PowerShell для генерации самоподписанного сертификата

Для создания самоподписанного сертификата в PowerShell нужно использовать командлет New-SelfSignedCertificate, входящий в состав модуля PKI (Public Key Infrastructure).

Чтобы вывести список всех доступных командлетов в модуле PKI, выполните команду:

Get-Command -Module PKI

управление самоподписанными сертфикатми встроенным модулем powershell pki

Самоподписанные сертификаты рекомендуется использовать в тестовых целях или для обеспечения сертификатами внутренних интранет служб (IIS, Exchange, Web Application Proxy, LDAPS, ADRMS, DirectAccess и т.п.), в тех случая когда по какой-то причине приобретение сертификата у внешнего провайдера или разворачивание инфраструктуры PKI/CA невозможны.

Совет. Не забывайте также про возможность использования полноценных бесплатных SSL сертификатов от Let’s Encrypt. Пример, как выпустить SSL сертификат Let’s Encrypt и привязать его к сайту IIS.

Для создания сертификата нужно указать значения –DnsName (DNS имя сервера, имя может быть произвольным и отличаться от имени localhost) и —CertStoreLocation (раздел локального хранилища сертификатов, в который будет помещен сгенерированный сертификат). Командлет можно использовать для создания самоподписанного сертификата в Windows 10 (в нашем примере), Windows 8/8.1 и Windows Server 2019/2016/2012 R2.

New-SelfSignedCertificate - командлет для создания сертификата

Directory: Microsoft.PowerShell.Security\Certificate::LocalMachine\My
Thumbprint Subject

Если вы запустите эту команду в PowerShell без прав администратор, появится ошибка:

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

Как вы видите, в свойствах сертификата указано, что данный сертификат может использоваться для аутентификации клиентов (Client Authentication). Также он действителен и для аутентификации сервера (Server Authentication).

Самоподписанный сертифкат в разделе личных сертификатов

С помощью командлета Get-ChildItem можно вывести все параметры созданного сертификата по его отпечатку (Thumbprint):

Get-ChildItem -Path "Cert:\LocalMachine\My" | Where-Object Thumbprint -eq DC1A0FDE0120085A45D8E14F870148D1EBCB82AE | Select-Object *

просмотр всех параметров самоподписанного сертфиката с помощью powershell

Примечание. Срок действия такого самоподписанного сертификата истечкает через 1 год с момента его создания. Можно задать другой срок действия сертификата с помощью атрибута –NotAfter.Чтобы выпустить сертификат на 3 года, выполните следующие команды:

Можно создать цепочку сертфикатов. Сначала создается корневой сертификат (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-PfxCertificate - экспорт сертификата в файл

Можно экспортировать открытый ключ сертификата:

Export-Certificate -Cert Cert:\LocalMachine\My\2779C0490D558B31AAA0CEF2F6EB1A5C2CA83B30 -FilePath C:\testcert.cer

Проверьте, что в указанном каталоге появился cer(PFX)файл сертификата. Если щелкнуть по нему правой клавишей и выбрать пункт меню Install Certificate, можно с помощью мастера импорта сертификатов добавить сертификат в корневые доверенные сертификаты компьютера.

установить cer/pfx сертификат с помощью powershell

Выберите Store location -> Local Machine, Place all certificates in the following store -> Trusted Root Certification Authorities.

импорт сертфиката в доверенные корневые сертфикаты компьютера

Можно создать сертификат и сразу импортировать его в доверенные корневые сертификаты компьютера командами:
$cert=New-SelfSignedCertificate …..
$certFile = Export-Certificate -Cert $cert -FilePath C:\certname.cer
Import-Certificate -CertStoreLocation Cert:\LocalMachine\AuthRoot -FilePath $certFile.FullName

Полученный открытый ключ или сам файл сертификата можно распространить на все компьютеры и сервера в домене с помощью GPO (пример установки сертификата на компьютеры с помощью групповых политик).

Одной из полезных возможностей командлета New-SelfSignedCertificate является возможность создать сертификат с несколькими различными именами Subject Alternative Names (SAN).

Примечание. Утилита Makecert.exe, в отличии от командлета New-SelfSignedCertificate, не умеет создавать сертификаты с SAN.

Если создается сертификат с несколькими именами, первое имя в параметре DnsName будет использоваться в качестве CN (Common Name) сертификата. К примеру, создадим сертификат, у которого указаны следующие имена:

Команда создания сертификата будет такой:

Сертификат на несколько DNS имен

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

Ошибка UnknownError при подписывании PowerShell скрипта самоподписанным сертификатом

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.

сгенерировать самоподписанный сертификат в iis

Вы можете привязать самоподписанный сертификат SHA-256, созданный в PowerShell, к сайту IIS. Если вы с помощью PowerShell создали SSL сертификат и поместили его в хранилище сертификатов компьютера, он будет автоматически доступен для сайтов IIS.

привязать самоподписанный ssl сертфикат к сайту в IIS Manager

Запустите консоль IIS Manager, выберите ваш сайт, затем в настройке Site Binding, выберите созданный вами сертификат и сохраните изменения.


Ответ прост: создать собственный сертификат, либо подписывающий сам себя, либо заверенный локальным корневым сервером, и внести его в хранилище доверенных сертификатов операционной системы. Далее этим сертификатом можно пользоваться на локальном веб-сервере.

В этой статье мы разберем процесс создания локального корневого сертификата (также известного, как источник сертификатов). Это позволит вам создавать сколько угодно сертификатов для доменных имен, но доверять только одному сертификату — корневому.

Важно отметить вот что: с 1 сентября 2020 года SSL-сертификаты не выдаются дольше, чем на тринадцать месяцев (397 дней). Поэтому для сертификатов, создаваемых в этой статье, мы ограничимся двенадцатью месяцами.

Источник сертификата (Certificate Authority)

1. Создайте закрытый ключ и самоподписанный сертификат

Опционально: если необходимо, можно заменить MY-CA в CN на что-нибудь другое.

Если вам захочется проверить информацию сертификата, его содержимое можно вывести, запустив следующий код:

2. Создайте файл сертификата с расширением .crt :

Сертификат доменного имени

В большинстве случаев достаточно зарегистрировать в сертификате вашу рабочую станцию. Тем не менее, если вы предпочитаете собственные доменные имена для локальных приложений, в созданный сертификат можно добавить несколько альтернативных имен.

1. Создайте файл расширения x509 v3:

Следуя этому шаблону, можно добавить сколько угодно доменных имен.

Примечание: пожалуйста, обновите DNS.4, DNS.5 и DNS.6 или удалите их, если у вас не настроены никакие локальные доменные имена.

2. Создайте закрытый ключ и запрос на подпись сертификата:

Опционально: страну, штат, город и организацию можно изменять.

3. Создайте самоподписанный сертификат:

Приложениям, обслуживающим ваш контент, понадобится доступ к файлам сертификата и закрытого ключа. Это может быть локальный веб-сервер (Apache или NGINX), локальный сервис или какой-то другой локальный инструмент, допустим, сборщик модулей DevServer.

Вот несколько примеров:

Apache

NGINX

webpack DevServer

Express.js


Вы рассчитывали увидеть кое-что другое, но именно этого и следовало ожидать — потому что источник сертификата еще не входит в число доверенных.

Чтобы получить обозначение безопасного доступа, ваш новый источник сертификата должен считаться доверенным на вашей машине. Процесс присваивания этого статуса различается в зависимости от операционной системы и удовлетворит большинство браузеров. Если вы используете Firefox, процесс имеет некоторые отличия.

macOS — Chrome и Safari

1. Дважды кликните на корневом сертификате ( ca.crt ).

2. Выберите нужную связку ключей Самоподписанный сертификат ssl как сгенерировать windows ( login , если вы хотите, чтобы сертификат считался доверенным только в вашем аккаунте, или System , если сертификат должен считаться доверенным во всей системе).

3. Добавьте сертификат.

4. Откройте «Keychain Access» (если еще не открыт).

5. Выделите keychain, который выбрали раньше.

6. Вы должны увидеть сертификат MY-CA (это будет имя, которое вы, как CN, дали вашему источнику сертификата).

7. Дважды кликните по сертификату.

8. Разверните «Доверять» и выберите опцию «Доверять всегда» в пункте «При использовании этого сертификата».


9. Закройте окно сертификата и введите свой пользовательский пароль (если требуется).

Windows 10 — Chrome, IE11 и Edge

1. Дважды кликните на сертификате ( ca.crt ).

2. Кликните на кнопку «Установить сертификат».

3. Выберите, хотите ли вы хранить его на уровне пользователя или на уровне машины.

4. Кликните «Дальше».

5. Выберите «Разместить все сертификаты в следующем хранилище».

6. Кликните «Обзор».

7. Выберите «Доверенные корневые источники сертификатов».

9. Кликните «Дальше».

10. Кликните «Завершить».

11. Если появится подсказка, кликните «Да».

Firefox


Чтобы добавить разрешения сертификату, кликните «Дополнительно…». Сразу же после этого кликните на «Принять риск и продолжить», чтобы дать понять, что вы знаете о риске.

Это нужно сделать всего один раз, но для каждого локального домена.

Теперь, когда сертификат создан и доверие к нему обеспечено, вы без проблем можете посещать свой локальный домен! Обслуживание приложений стало безопасным, и вы можете спокойно продолжать разработку. Возвращаясь к примеру с Express, результат на экране будет таким:


Сайт полностью загружен, и рядом с URL в Chrome теперь отображается символ безопасного соединения.

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

Самозаверяющий сертификат SSL - это сертификат, подписанный лицом, которое его создало, а не доверенным центром сертификации. Самозаверяющие сертификаты могут иметь тот же уровень шифрования, что и доверенный CA-подписанный SSL-сертификат.

Самозаверяющие сертификаты, признанные действительными в любом браузере. Если вы используете самозаверяющий сертификат, веб-браузер покажет посетителю предупреждение о том, что сертификат веб-сайта невозможно проверить.

Самозаверяющие сертификаты в основном используются для целей тестирования или внутреннего использования. Вы не должны использовать самозаверяющий сертификат в производственных системах, которые подключены к Интернету.


Предпосылки

Инструментарий openssl необходим для создания самозаверяющего сертификата.

Чтобы проверить, установлен ли пакет openssl в вашей системе Linux, откройте ваш терминал, введите openssl version и нажмите Enter. Если пакет установлен, система распечатает версию OpenSSL, в противном случае вы увидите нечто подобное openssl command not found .

Если пакет openssl не установлен в вашей системе, вы можете установить его, выполнив следующую команду:

Ubuntu и Debian

Чентос и Федора


Создание самоподписанного SSL-сертификата

Чтобы создать новый самоподписанный сертификат SSL, используйте openssl req команду:

Давайте разберем команду и разберемся, что означает каждая опция:

  • -newkey rsa:4096 - Создает новый запрос сертификата и 4096-битный ключ RSA. Значение по умолчанию составляет 2048 бит.
  • -x509 - Создает сертификат X.509.
  • -sha256 - Используйте 265-битный SHA (алгоритм безопасного хэширования).
  • -days 3650 - Количество дней для сертификации сертификата. 3650 - это 10 лет. Вы можете использовать любое положительное целое число.
  • -nodes - Создает ключ без ключевой фразы.
  • -out example.crt - Указывает имя файла, в который будет записан вновь созданный сертификат. Вы можете указать любое имя файла.
  • -keyout example.key - Задает имя файла, в который будет записан вновь созданный закрытый ключ. Вы можете указать любое имя файла.


Для получения дополнительной информации о параметрах openssl req команды посетите страницу документации OpenSSL req.

Как только вы нажмете Enter, команда сгенерирует закрытый ключ и задаст вам ряд вопросов, которые она будет использовать для генерации сертификата.

Введите запрашиваемую информацию и нажмите Enter.

Сертификат и закрытый ключ будут созданы в указанном месте. Используйте команду ls, чтобы убедиться, что файлы были созданы:

Это оно! Вы создали новый самозаверяющий сертификат SSL.

Всегда полезно создать резервную копию нового сертификата и ключа для внешнего хранилища.


Создание самоподписанного SSL-сертификата без запроса

Если вы хотите сгенерировать самозаверяющий SSL-сертификат без запроса какого-либо вопроса, используйте -subj параметр и укажите всю информацию о субъекте:

  • C= - Название страны. Двухбуквенное сокращение ISO.
  • ST= - Название штата или провинции.
  • L= - Название населенного пункта. Название города, в котором вы находитесь.
  • O= - Полное название вашей организации.
  • OU= - Организационная единица.
  • CN= - Полное доменное имя.


Вывод

В этом руководстве мы показали, как создать самозаверяющий сертификат SSL с помощью инструмента openssl. Теперь, когда у вас есть сертификат, вы можете настроить приложение для его использования.

Читайте также: