Самоподписанный сертификат windows что это

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

Creating a Self-Signed SSL Certificate

В этом руководстве объясняется, как создать самозаверяющий сертификат SSL с помощью инструмента openssl.

Что такое самоподписанный сертификат 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. Теперь, когда у вас есть сертификат, вы можете настроить приложение для его использования.

Создание самозаверяющих сертификатов с помощью интерфейса командной строки .NET Generate self-signed certificates with the .NET CLI

При использовании самозаверяющих сертификатов существуют различные способы их создания и использования в сценариях разработки и тестирования. When using self-signed certificates, there are different ways to create and use them for development and testing scenarios. В этом руководстве вы узнаете, как использовать самозаверяющие сертификаты с dotnet dev-certs , а также о других параметрах, таких как PowerShell и OpenSSL . In this guide, you’ll cover using self-signed certificates with dotnet dev-certs , and other options like PowerShell and OpenSSL .

Читайте также:  One note pro linux

Затем можно проверить, что сертификат будет загружен, с помощью примера, такого как приложение ASP.NET Core, размещенное в контейнере. You can then validate that the certificate will load using an example such as an ASP.NET Core app hosted in a container.

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

В этом примере можно использовать .NET Core 3.1 или .NET 5. In the sample, you can utilize either .NET Core 3.1 or .NET 5.

Для dotnet dev-certs следует убедиться в том, что установлена соответствующая версия .NET: For dotnet dev-certs , be sure to have the appropriate version of .NET installed:

Для работы с этим примером требуется Docker 17.06 или клиент Docker более поздней версии. This sample requires Docker 17.06 or later of the Docker client.

Подготовка примера приложения Prepare sample app

Необходимо подготовить пример приложения в зависимости от среды выполнения, которую вы хотите использовать для тестирования, либо .NET Core 3.1, либо .NET 5. You’ll need to prepare the sample app depending on which runtime you’d like to use for testing, either .NET Core 3.1 or .NET 5.

В рамках этого руководства вы будете использовать пример приложения и внесете необходимые изменения. For this guide, you’ll use a sample app and make changes where appropriate.

Пример приложения .NET Core 3.1 .NET Core 3.1 sample app

Получение примера приложения. Get the sample app.

Перейдите в репозиторий локально и откройте рабочую область в редакторе. Navigate to the repository locally and open up the workspace in an editor.

Если вы хотите использовать параметры dotnet publish для обрезки развертывания, следует убедиться, что соответствующие зависимости включены для поддержки SSL-сертификатов. If you’re looking to use dotnet publish parameters to trim the deployment, you should make sure that the appropriate dependencies are included for supporting SSL certificates. Обновите файл dotnet-docker\samples\aspnetapp\aspnetapp.csproj, чтобы убедиться в том, что в контейнер включены соответствующие сборки. Update the dotnet-docker\samples\aspnetapp\aspnetapp.csproj to ensure that the appropriate assemblies are included in the container. Дополнительные сведения см. в статье, посвященной обновлению файла CSPROJ для поддержки SSL-сертификатов при использовании усечения для автономных развертываний. For reference, check how to update the .csproj file to support ssl certificates when using trimming for self-contained deployments.

Убедитесь, что aspnetapp.csproj включает соответствующую целевую платформу: Make sure the aspnetapp.csproj includes the appropriate target framework:

Измените Dockerfile, чтобы среда выполнения указывала на .NET Core 3.1: Modify the Dockerfile to make sure the runtime points to .NET Core 3.1:

Убедитесь, что вы указали на пример приложения. Make sure you’re pointing to the sample app.

Создайте контейнер для локального тестирования. Build the container for testing locally.

Пример приложения .NET 5 .NET 5 sample app

В рамках этого руководства пример aspnetapp следует проверить на предмет использования .NET 5. For this guide, the sample aspnetapp should be checked for .NET 5.

Проверьте пример приложения Dockerfile на предмет использования .NET 5. Check sample app Dockerfile is using .NET 5.

В зависимости от ОС узла может потребоваться обновить среду выполнения ASP.NET. Depending on the host OS, the ASP.NET runtime may need to be updated. Например, изменение с mcr.microsoft.com/dotnet/aspnet:5.0-nanoservercore-2009 AS runtime на mcr.microsoft.com/dotnet/aspnet:5.0-windowsservercore-ltsc2019 AS runtime в Dockerfile поможет выбрать соответствующую среду выполнения Windows. For example, changing from mcr.microsoft.com/dotnet/aspnet:5.0-nanoservercore-2009 AS runtime to mcr.microsoft.com/dotnet/aspnet:5.0-windowsservercore-ltsc2019 AS runtime in the Dockerfile will help with targeting the appropriate Windows runtime.

Например, это поможет при тестировании сертификатов в Windows: For example, this will help with testing the certificates on Windows:

Читайте также:  Как через проигрыватель windows media

Если вы тестируете сертификаты в Linux, можно использовать существующий Dockerfile. If we’re testing the certificates on Linux, you can use the existing Dockerfile.

Убедитесь, что aspnetapp.csproj включает соответствующую целевую платформу: Make sure the aspnetapp.csproj includes the appropriate target framework:

Если вы хотите использовать параметры dotnet publish для обрезки развертывания, убедитесь, что соответствующие зависимости включены для поддержки SSL-сертификатов. If you want to use dotnet publish parameters to trim the deployment, make sure that the appropriate dependencies are included for supporting SSL certificates. Обновите файл dotnet-docker\samples\aspnetapp\aspnetapp.csproj, чтобы убедиться в том, что в контейнер включены соответствующие сборки. Update the dotnet-docker\samples\aspnetapp\aspnetapp.csproj to ensure that the appropriate assemblies are included in the container. Дополнительные сведения см. в статье, посвященной обновлению файла CSPROJ для поддержки SSL-сертификатов при использовании усечения для автономных развертываний. For reference, check how to update the .csproj file to support ssl certificates when using trimming for self-contained deployments.

Убедитесь, что вы указали на пример приложения. Make sure you’re pointing to the sample app.

Создайте контейнер для локального тестирования. Build the container for testing locally.

Создание самозаверяющего сертификата. Create a self-signed certificate

Самозаверяющий сертификат можно создать: You can create a self-signed certificate:

С помощью dotnet dev-certs With dotnet dev-certs

Для работы с самозаверяющими сертификатами можно использовать dotnet dev-certs . You can use dotnet dev-certs to work with self-signed certificates. В этом примере используется консоль PowerShell. This example uses a PowerShell console.

Имя сертификата, в данном случае aspnetapp.pfx, должно совпадать с именем сборки проекта. The certificate name, in this case aspnetapp.pfx must match the project assembly name. crypticpassword используется в качестве замены пароля на ваш выбор. crypticpassword is used as a stand-in for a password of your own choosing. Если консоль возвращает сообщение «Допустимый HTTPS-сертификат уже существует», то в вашем хранилище уже есть доверенный сертификат. If console returns «A valid HTTPS certificate is already present.», a trusted certificate already exists in your store. Его можно экспортировать с помощью консоли MMC. It can be exported using MMC Console.

Настройте секреты приложения для сертификата: Configure application secrets, for the certificate:

Примечание. Пароль должен совпадать с паролем, используемым для сертификата. Note: The password must match the password used for the certificate.

Запустите образ контейнера с ASP.NET Core, настроенным для HTTPS: Run the container image with ASP.NET Core configured for HTTPS:

После запуска приложения перейдите по адресу https://localhost:8001 в веб-браузере. Once the application starts, navigate to https://localhost:8001 in your web browser.

Очистка Clean up

Если секреты и сертификаты не используются, обязательно очистите их. If the secrets and certificates are not in use, be sure to clean them up.

С помощью PowerShell With PowerShell

Для создания самозаверяющих сертификатов можно использовать PowerShell. You can use PowerShell to generate self-signed certificates. Клиент PKI можно использовать для создания самозаверяющего сертификата. The PKI Client can be used to generate a self-signed certificate.

Сертификат будет создан, однако в целях тестирования следует поместить его в хранилище сертификатов для тестирования в браузере. The certificate will be generated, but for the purposes of testing, should be placed in a cert store for testing in a browser.

На этом этапе сертификаты должны быть доступны для просмотра с помощью оснастки консоли управления. At this point, the certificates should be viewable from an MMC snap-in.

Вы можете запустить образец контейнера в подсистеме Windows для Linux (WSL): You can run the sample container in Windows Subsystem for Linux (WSL):

Обратите внимание, что при подключении тома путь к файлу может обрабатываться по-разному на основе узла. Note that with the volume mount the file path could be handled differently based on host. Например, в WSL мы можем заменить /c/certs на /mnt/c/certs. For example, in WSL we may replace /c/certs with /mnt/c/certs.

Если вы используете контейнер, созданный ранее для Windows, команда run должна выглядеть следующим образом: If you’re using the container built earlier for Windows, the run command would look like the following:

Читайте также:  Qualcomm atheros ar9285 driver windows

Когда приложение откроется, перейдите по адресу contoso.com:8001 в браузере. Once the application is up, navigate to contoso.com:8001 in a browser.

Убедитесь, что записи узла обновлены, чтобы contoso.com отвечал на соответствующий IP-адрес (например, 127.0.0.1). Be sure that the host entries are updated for contoso.com to answer on the appropriate ip address (for example 127.0.0.1). Если сертификат не распознан, убедитесь, что сертификат, загружаемый вместе с контейнером, также является доверенным для узла, а также что для contoso.com имеются соответствующие записи SAN/DNS. If the certificate isn’t recognized, make sure that the certificate that is loaded with the container is also trusted on the host, and that there’s appropriate SAN / DNS entries for contoso.com .

Очистка Clean up

С помощью OpenSSL With OpenSSL

Для создания самозаверяющих сертификатов можно использовать OpenSSL. You can use OpenSSL to create self-signed certificates. В этом примере будет использоваться WSL/Ubuntu и оболочка bash с OpenSSL . This example will use WSL / Ubuntu and a bash shell with OpenSSL .

При этом будут созданы файлы CRT и KEY. This will generate a .crt and a .key.

Чтобы получить PFX-файл, используйте следующую команду: To get a .pfx, use the following command:

В примере. aspnetcore 3.1 будет использоваться .pfx и пароль. The .aspnetcore 3.1 example will use .pfx and a password. Начиная со среды выполнения .net 5 Kestrel также может принимать .crt и файлы .key с кодировкой PEM. Starting with the .net 5 runtime, Kestrel can also take .crt and PEM-encoded .key files.

В зависимости от ОС узла сертификат должен быть доверенным. Depending on the host os, the certificate will need to be trusted. На узле Linux «доверие» сертификат отличается и зависит от дистрибутива. On a Linux host, ‘trusting’ the certificate is different and distro dependent.

Ниже приведен пример использования PowerShell в Windows. For the purposes of this guide, here’s an example in Windows using PowerShell:

Для .NET Core 3.1 выполните следующую команду в WSL: For .NET Core 3.1, run the following command in WSL:

Начиная с .NET 5 Kestrel может принимать .crt и .key файлы с кодировкой PEM. Starting with .NET 5, Kestrel can take the .crt and PEM-encoded .key files. Пример можно запустить с помощью следующей команды для .NET 5: You can run the sample with the following command for .NET 5:

Обратите внимание, что в WSL путь подключения тома может быть разным в зависимости от конфигурации. Note that in WSL, the volume mount path may change depending on the configuration.

Для .NET Core 3.1 в Windows выполните следующую команду в Powershell : For .NET Core 3.1 in Windows, run the following command in Powershell :

Для .NET 5 в Windows выполните следующую команду в PowerShell: For .NET 5 in Windows, run the following command in PowerShell:

Когда приложение откроется, перейдите по адресу contoso.com:8001 в браузере. Once the application is up, navigate to contoso.com:8001 in a browser.

Убедитесь, что записи узла обновлены, чтобы contoso.com отвечал на соответствующий IP-адрес (например, 127.0.0.1). Be sure that the host entries are updated for contoso.com to answer on the appropriate ip address (for example 127.0.0.1). Если сертификат не распознан, убедитесь, что сертификат, загружаемый вместе с контейнером, также является доверенным для узла, а также что для contoso.com имеются соответствующие записи SAN/DNS. If the certificate isn’t recognized, make sure that the certificate that is loaded with the container is also trusted on the host, and that there’s appropriate SAN / DNS entries for contoso.com .

Очистка Clean up

Не забудьте очистить самозаверяющие сертификаты после завершения тестирования. Be sure to clean up the self-signed certificates once done testing.

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