Как сделать самоподписанный сертификат windows

Содержание
  1. Как создать самоподписанный сертификат в Windows?
  2. New-SelfSignedCertificate: командлет PowerShell для генерации самоподписанного сертификата
  3. Создать самоподписанный сертфикат типа Code Signing для подписывания кода
  4. Использование самоподписанного SSL сертификата SHA-256 в IIS
  5. Создание самоподписанных корневых и клиентских сертификатов с помощью Makecert
  6. Создание самоподписанного корневого сертификата
  7. Создание самоподписанного клиентского сертификата
  8. Экспорт клиентского сертификата
  9. Создание самозаверяющих сертификатов с помощью интерфейса командной строки .NET Generate self-signed certificates with the .NET CLI
  10. Предварительные требования Prerequisites
  11. Подготовка примера приложения Prepare sample app
  12. Пример приложения .NET Core 3.1 .NET Core 3.1 sample app
  13. Пример приложения .NET 5 .NET 5 sample app
  14. Создание самозаверяющего сертификата. Create a self-signed certificate
  15. С помощью dotnet dev-certs With dotnet dev-certs
  16. Очистка Clean up
  17. С помощью PowerShell With PowerShell
  18. Очистка Clean up
  19. С помощью OpenSSL With OpenSSL
  20. Очистка Clean up

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

Читайте также:  Временные файлы установки windows что это

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

Создание самоподписанных корневых и клиентских сертификатов с помощью Makecert

Недавно возникла необходимость создания самоподписанных сертификатов для работы с Microsoft Azure. Например, сертификаты могут понадобится при настройке point-to-site VPN, или ADFS.

Существует несколько способов создания самоподписанного сертификата. На мой взгляд, проще всего воспользоваться утилитой makecert из состава Microsoft Visual Studio.

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

Скачайте и установите Microsoft Visual Studio Express 2013 for Windows Desktop (https://www.microsoft.com/en-us/download/details.aspx?id=40769)

Запустите командную строку Visual Studio Express Cross Tools Command Prompt с правами администратораю.


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

makecert -sky exchange -r -n «CN=RootCertificateName» -pe -a sha1 -len 2048 -ss My «RootCertificateName.cer»

makecert -sky exchange -r -n «CN=VMblog.ru» -pe -a sha1 -len 2048 -ss My «c:\PS\VMblog.ru.cer»


Команда создаст новый корневой сертификат и автоматически установит его в хранилище Personal Certificate store. Файл сертификата *.cer будет сохранен в указанном каталоге и в случае необходимости его можно загрузить в Azure Management Portal.


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

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

Чтобы на основе корневого сертификата создать клиентский, в том же окне командной строки Visual Studio Express выполните команду в формате:

makecert.exe -n «CN=ClientCertificateName» -pe -sky exchange -m 96 -ss My -in «RootCertificateName» -is my -a sha1

makecert.exe -n «CN=srv1.vmblog.ru» -pe -sky exchange -m 96 -ss My -in «VMblog.ru» -is my -a sha1

В результате в хранилище Personal Certificate store появится новый клиентский сертификат с CN srv1.vmblog.ru.

Примечание. Microsoft при работе с VPN подключением «точка-сайт» рекомендует создавать уникальный клиентский сертификат для каждого компьютера, который должен подключаться к к виртуальной сети.

Экспорт клиентского сертификата

Чтобы экспортировать клиентский сертификат из вашего хранилища Personal Certificate store в файл и установить его на клиентской машине, воспользуйтесь оснасткой управления сертификатами certmgr.msc

Разверните хранилище Personal -> Certificates, выберите нужный сертификат, щелкните по нему ПКМ и выберите All tasks -> Export.


Экспортируйте сертификат с помощью опции Client Certificate with the private key . На выходе появится файл с расширением .pfx. Не забудьте запомнить и сохранить пароль, который вы установили для этого сертификата.

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

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

Затем можно проверить, что сертификат будет загружен, с помощью примера, такого как приложение 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.

Читайте также:  Драйвера для windows 10 tp link tg 3468

В рамках этого руководства вы будете использовать пример приложения и внесете необходимые изменения. 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:

Если вы тестируете сертификаты в 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.

Читайте также:  Windows password was changed

Очистка 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:

Когда приложение откроется, перейдите по адресу 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.

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