Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ASP.NET Core использует HTTPS по умолчанию. HTTPS использует сертификаты для доверия, идентификации и шифрования.
В этом документе объясняется, как запускать предварительно созданные образы контейнеров с HTTPS с помощью интерфейса командной строки .NET (CLI). Инструкции по запуску Docker в среде разработки с помощью Visual Studio см. в статье "Разработка приложений ASP.NET Core с помощью Docker по протоколу HTTPS".
Для работы с этим примером требуется клиент Docker версии 17.06 или более поздней.
Предварительные требования
Текущий .NET SDK.
Сертификаты
Сертификат из центра сертификации требуется для размещения в рабочей среде для домена. Let's Encrypt — это центр сертификации, который предлагает бесплатные сертификаты.
В этом документе используются самозаверяемые сертификаты разработки для размещения предварительно созданных образов через localhost. Инструкции аналогичны использованию сертификатов рабочей среды. Сертификат, сгенерированный dotnet dev-certs, предназначен только для использования с localhost и не должен использоваться в такой среде, как Kubernetes. Для поддержки HTTPS в кластере Kubernetes используйте средства, предоставляемые Управление сертификатами TLS в кластере, для настройки TLS в подах.
Используйте dotnet dev-certs для создания самозаверяемых сертификатов для разработки и тестирования.
Для сертификатов для рабочей среды:
- Средство
dotnet dev-certsне требуется. - Сертификаты не обязательно хранить в расположении, используемом в инструкциях. Любое расположение должно работать, хотя хранение сертификатов в каталоге сайта не рекомендуется.
Инструкции, содержащиеся в следующем разделе, монтируют сертификаты в контейнеры как тома с помощью параметра командной строки Docker -v. Вы можете добавить сертификаты в образы контейнеров с помощью команды COPY в Dockerfile, но делать это не рекомендуется. Копирование сертификатов в образ не рекомендуется по следующим причинам:
- Трудно использовать тот же образ для тестирования с сертификатами разработчика.
- Трудно использовать тот же образ системы для Hosting с рабочими сертификатами.
- Существует значительный риск раскрытия данных сертификата.
Запуск предварительно собранных образов контейнеров через HTTPS
Используйте следующие инструкции для конфигурации операционной системы.
Windows с контейнерами Linux
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
В предыдущих командах замените <CREDENTIAL_PLACEHOLDER> паролем.
Запустите образ контейнера с ASP.NET Core, настроенным для HTTPS, в командной оболочке:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=443 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
В приведенном выше коде замените <CREDENTIAL_PLACEHOLDER> паролем. Пароль должен совпадать с паролем, используемым для сертификата.
При использовании PowerShell замените %USERPROFILE% на $env:USERPROFILE.
Сертификат в этом случае должен быть файлом .pfx. Использование файла .crt или .key с паролем или без него не поддерживается в примере контейнера. Например, при указании .crt файла контейнер может возвращать сообщения об ошибках, такие как "SSL в режиме сервера должен использовать сертификат с соответствующим закрытым ключом." При использовании WSL проверьте путь монтирования, чтобы убедиться, что сертификат загружается правильно.
Note
Не путайте ключ конфигурации HTTPS_PORTS и переменную среды ASPNETCORE_HTTPS_PORTS, которые задают порты для конфигурации конечных точек Kestrel/HTTP.sys, с ключом конфигурации HTTPS_PORT и переменной среды ASPNETCORE_HTTPS_PORT, которые задают порт для промежуточного ПО перенаправления HTTPS.
macOS или Linux
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
Для Linux dotnet dev-certs https --trust требуется пакет SDK для .NET 9 или более поздней версии. Для Linux в SDK .NET 8.0.401 или более ранней версии обратитесь к документации вашего дистрибутива Linux, чтобы доверять сертификату.
В предыдущих командах замените <CREDENTIAL_PLACEHOLDER> на пароль.
Запустите образ контейнера с ASP.NET Core, настроенным для HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=443 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
В приведенном выше коде замените <CREDENTIAL_PLACEHOLDER> на пароль. Пароль должен совпадать с паролем, используемым для сертификата.
Note
Не путайте ключ конфигурации HTTPS_PORTS и переменную среды ASPNETCORE_HTTPS_PORTS, которые задают порты для конфигурации конечных точек Kestrel/HTTP.sys, с ключом конфигурации HTTPS_PORT и переменной среды ASPNETCORE_HTTPS_PORT, которые задают порт для промежуточного ПО перенаправления HTTPS.
Windows с использованием контейнеров Windows
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
В предыдущих командах замените <CREDENTIAL_PLACEHOLDER> на пароль. При использовании PowerShell замените %USERPROFILE% на $env:USERPROFILE.
Запустите образ контейнера с ASP.NET Core, настроенным для HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=443 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ --user ContainerAdministrator mcr.microsoft.com/dotnet/samples:aspnetapp
ПРИМЕЧАНИЕ:<CREDENTIAL_PLACEHOLDER> — это пароль по умолчанию для сертификатов Kestrel.
Пароль должен совпадать с паролем, используемым для сертификата. При использовании PowerShell замените %USERPROFILE% на $env:USERPROFILE.
Разработка приложений ASP.NET Core с применением Docker по протоколу HTTPS
Сведения и примеры разработки приложений ASP.NET Core с HTTPS в контейнерах Docker см. в статье Разработка приложений ASP.NET Core с Docker по HTTPS.
См. также
- Developing ASP.NET Core Applications with Docker over HTTPS (Разработка приложений ASP.NET Core с применением Docker по протоколу HTTPS)
dotnet dev-certs
ASP.NET Core использует HTTPS по умолчанию. HTTPS использует сертификаты для доверия, идентификации и шифрования.
В этом документе объясняется, как запускать предварительно созданные образы контейнеров по HTTPS с помощью интерфейса командной строки .NET (CLI). Инструкции по запуску Docker в процессе разработки с помощью Visual Studio см. в статье «Разработка приложений ASP.NET Core с помощью Docker по протоколу HTTPS».
Для работы с этим примером требуется клиент Docker версии 17.06 или более поздней.
Предварительные требования
Текущий .NET SDK.
Сертификаты
Сертификат из центра сертификации требуется для размещения в рабочей среде для домена. Let's Encrypt — это центр сертификации, который предлагает бесплатные сертификаты.
В этом документе используются самозаверяемые сертификаты разработки для размещения предварительно созданных образов через localhost. Инструкции аналогичны использованию сертификатов производственной среды. Сертификат, созданный dotnet dev-certs, предназначен для использования только с localhost и не должен использоваться в такой среде, как Kubernetes. Для поддержки HTTPS в кластере Kubernetes используйте средства, предоставляемые в Manage TLS Certificates in a Cluster, для настройки TLS в подах.
Используйте dotnet dev-certs для создания самозаверяемых сертификатов для разработки и тестирования.
Для продакшн-сертификатов:
- Средство
dotnet dev-certsне требуется. - Сертификаты не нужно хранить в расположении, используемом в инструкциях. Любое расположение должно работать, хотя хранение сертификатов в каталоге сайта не рекомендуется.
Инструкции, содержащиеся в следующем разделе, монтируют сертификаты в контейнеры как тома с помощью параметра командной строки Docker -v. Вы можете добавить сертификаты в образы контейнеров с помощью команды COPY в Dockerfile, но это не рекомендуется. Копирование сертификатов в образ не рекомендуется по следующим причинам:
- Трудно использовать тот же образ для тестирования при использовании сертификатов разработчика.
- Трудно использовать тот же образ для Hosting с рабочими сертификатами.
- Существует значительный риск раскрытия данных сертификата.
Запуск предварительно собранных образов контейнеров по HTTPS
Используйте следующие инструкции для конфигурации операционной системы.
Windows с контейнерами Linux
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
В предыдущих командах замените <CREDENTIAL_PLACEHOLDER> паролем.
Запустите образ контейнера с ASP.NET Core, настроенным для HTTPS, в командной оболочке:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+:443;http://+" -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
В приведенном выше коде замените <CREDENTIAL_PLACEHOLDER> на пароль. Пароль должен совпадать с паролем, используемым для сертификата.
При использовании PowerShell замените %USERPROFILE% на $env:USERPROFILE.
Примечание. Сертификат в данном случае должен быть файлом .pfx . Использование файла .crt или .key с паролем или без него не поддерживается в примере контейнера. Например, при указании .crt файла контейнер может возвращать сообщения об ошибках, такие как "SSL в режиме сервера должен использовать сертификат с соответствующим закрытым ключом." При использовании WSL проверьте путь монтирования, чтобы убедиться, что сертификат загружается правильно.
macOS или Linux
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
dotnet dev-certs https --trust поддерживается только на macOS и Windows. Необходимо настроить доверие к сертификатам в Linux способом, поддерживаемым вашим дистрибутивом. Скорее всего, необходимо добавить сертификат в доверенные в браузере.
В предыдущих командах замените <CREDENTIAL_PLACEHOLDER> паролем.
Запустите образ контейнера с ASP.NET Core, настроенным для HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+:443;http://+" -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
В приведенном выше коде замените <CREDENTIAL_PLACEHOLDER> на пароль. Пароль должен совпадать с паролем, используемым для сертификата.
Windows, использующая контейнеры Windows
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
В предыдущих командах замените <CREDENTIAL_PLACEHOLDER> паролем. При использовании PowerShell замените %USERPROFILE% на $env:USERPROFILE.
Запустите образ контейнера с ASP.NET Core, настроенным для HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+:443;http://+" -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ --user ContainerAdministrator mcr.microsoft.com/dotnet/samples:aspnetapp
ПРИМЕЧАНИЕ:<CREDENTIAL_PLACEHOLDER> — это заполнитель для пароля сертификатов Kestrel по умолчанию.
Пароль должен совпадать с паролем, используемым для сертификата. При использовании PowerShell замените %USERPROFILE% на $env:USERPROFILE.
Разработка приложений ASP.NET Core с применением Docker по протоколу HTTPS
Сведения и примеры разработки приложений ASP.NET Core с HTTPS в контейнерах Docker см. в статье Разработка приложений ASP.NET Core с Docker через HTTPS.
См. также
- Developing ASP.NET Core Applications with Docker over HTTPS (Разработка приложений ASP.NET Core с применением Docker по протоколу HTTPS)
dotnet dev-certs
ASP.NET Core