Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ASP.NET Core использует HTTPS по умолчанию. HTTPS использует сертификаты для доверия, идентификации и шифрования.
В этом документе объясняется, как запускать предварительно созданные образы контейнеров по HTTPS.
См. статью Разработка приложений ASP.NET Core с помощью Docker по протоколу HTTPS для сценариев разработки.
Для работы с этим примером требуется клиент Docker версии 17.06 или новее.
Предварительные требования
Для выполнения некоторых инструкций в этом документе требуется .NET Core 2.2 SDK или более поздней версии.
Сертификаты
Сертификат из центра сертификации требуется для размещения в рабочей среде для домена. Let's Encrypt — это центр сертификации, который предлагает бесплатные сертификаты.
В этом документе используются самоподписанные сертификаты разработки для размещения на хостинге предварительно созданных образов через localhost. Инструкции аналогичны использованию продукционных сертификатов.
Для продуктивных сертификатов:
- Средство
dotnet dev-certsне требуется. - Сертификаты не нужно хранить в расположении, используемом в инструкциях. Сохраните сертификаты в любом месте за пределами каталога сайта.
В следующем разделе описано, как подключать сертификаты к контейнерам с помощью свойства volumes в docker-compose.yml. Вы можете добавить сертификаты в образы контейнеров с помощью команды COPY в Dockerfile, но это не рекомендуется. Копирование сертификатов в образ не рекомендуется по следующим причинам:
- Это затрудняет использование того же образа для тестирования с помощью сертификатов разработчика.
- Это затрудняет использование того же образа для Hosting с рабочими сертификатами.
- Существует значительный риск раскрытия сертификата.
Запуск контейнера с поддержкой https с помощью docker compose
Используйте следующие инструкции для конфигурации операционной системы.
Windows с контейнерами Linux
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Предыдущая команда с использованием .NET CLI:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
В предыдущих командах замените $CREDENTIAL_PLACEHOLDER$ паролем.
Создайте файл docker-compose.debug.yml со следующим содержимым:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Пароль, указанный в файле Docker Compose, должен совпадать с паролем, используемым для сертификата.
Запустите контейнер с ASP.NET Core, настроенным для HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
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$ паролем.
Создайте файл docker-compose.debug.yml со следующим содержимым:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Пароль, указанный в файле Docker Compose, должен совпадать с паролем, используемым для сертификата.
Запустите контейнер с настроенным HTTPS для ASP.NET Core:
docker-compose -f "docker-compose.debug.yml" up -d
Windows, использующая контейнеры Windows
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
В предыдущих командах замените $CREDENTIAL_PLACEHOLDER$ паролем.
Создайте файл docker-compose.debug.yml со следующим содержимым:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
Пароль, указанный в файле Docker Compose, должен совпадать с паролем, используемым для сертификата.
Запустите контейнер с ASP.NET Core, настроенным для HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
См. также
ASP.NET Core использует HTTPS по умолчанию. HTTPS использует сертификаты для доверия, идентификации и шифрования.
В этом документе объясняется, как запускать предварительно созданные образы контейнеров с HTTPS.
См. статью Разработка приложений ASP.NET Core с помощью Docker по протоколу HTTPS для сценариев разработки.
Для работы с этим примером требуется клиент Docker версии 17.06 или более поздней.
Предварительные требования
Пакет SDK для .NET Core 2.2 или более поздней версии требуется для некоторых инструкций в этом документе.
Сертификаты
Сертификат из центра сертификации требуется для размещения в рабочей среде для домена. Let's Encrypt — это центр сертификации, который предлагает бесплатные сертификаты.
В этом документе используются самоподписанные сертификаты разработки для размещения предварительно созданных образов через localhost. Инструкции аналогичны использованию промышленных сертификатов.
Для промышленных сертификатов:
- Средство
dotnet dev-certsне требуется. - Сертификаты не нужно хранить в расположении, используемом в инструкциях. Сохраните сертификаты в любом расположении за пределами каталога сайта.
Инструкции, содержащиеся в следующем разделе, описывают подключение сертификатов к контейнерам с помощью свойства volumes в docker-compose.yml. Сертификаты можно добавить в образы контейнеров с помощью команды COPY в Dockerfile, но это не рекомендуется. Копирование сертификатов в образ не рекомендуется по следующим причинам:
- Это затрудняет использование того же образа системы для тестирования с помощью сертификатов разработчика.
- Это затрудняет использование того же образа для Hosting с рабочими сертификатами.
- Существует значительный риск раскрытия сертификата.
Запуск контейнера с поддержкой https с помощью docker compose
Используйте следующие инструкции для конфигурации операционной системы.
Windows с контейнерами Linux
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Предыдущая команда с использованием .NET CLI:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
В предыдущих командах замените $CREDENTIAL_PLACEHOLDER$ паролем.
Создайте файл docker-compose.debug.yml со следующим содержимым:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Пароль, указанный в файле Docker Compose, должен совпадать с паролем, используемым для сертификата. В предыдущих командах замените -\0pw- на пароль.
Запустите контейнер с настроенным для HTTPS ASP.NET Core:
docker-compose -f "docker-compose.debug.yml" up -d
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$ на пароль.
Создайте файл docker-compose.debug.yml со следующим содержимым:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
Пароль, указанный в файле Docker Compose, должен совпадать с паролем, используемым для сертификата.
Запустите контейнер с ASP.NET Core, настроенным для HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Windows с использованием контейнеров Windows
Создайте сертификат и настройте локальный компьютер:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
В предыдущих командах замените $CREDENTIAL_PLACEHOLDER$ на пароль.
Создайте файл docker-compose.debug.yml со следующим содержимым:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=-\0pw-
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
The password specified in the docker compose file must match the password used for the certificate. In the preceding commands, replace `-\0pw-` with a password.
Start the container with ASP.NET Core configured for HTTPS:
```console
docker-compose -f "docker-compose.debug.yml" up -d
См. также
ASP.NET Core