Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Автор: Рик Андерсон (Rick Anderson)
ASP.NET Core использует HTTPS по умолчанию. HTTPS использует сертификаты для доверия, идентификации и шифрования.
В этом документе объясняется, как запускать предварительно созданные образы контейнеров с помощью ПРОТОКОЛА HTTPS с помощью интерфейса командной строки .NET (CLI). Инструкции по запуску Docker в разработке с помощью Visual Studio см. в статье "Разработка ASP.NET основных приложений с помощью Docker по протоколу HTTPS".
Для работы с этим примером требуется Docker 17.06 или клиент Docker более поздней версии.
Необходимые компоненты
Текущий пакет SDK для .NET.
Сертификаты
Сертификат из центра сертификации требуется для размещения в рабочей среде для домена. Let's Encrypt — это центр сертификации, который предлагает бесплатные сертификаты.
В этом документе используются самозаверяемые сертификаты разработки для размещения предварительно созданных образовlocalhost. Инструкции аналогичны использованию рабочих сертификатов. Созданный сертификат dotnet dev-certs используется только для использования и localhost не должен использоваться в среде, такой как Kubernetes. Для поддержки HTTPS в кластере Kubernetes используйте средства, предоставляемые управлением сертификатами TLS в кластере , для настройки TLS в модулях pod.
Используется dotnet dev-certs для создания самозаверяемых сертификатов для разработки и тестирования.
Для рабочих сертификатов:
- Средство
dotnet dev-certsне требуется. - Сертификаты не должны храниться в расположении, используемом в инструкциях. Любое расположение должно работать, хотя хранение сертификатов в каталоге сайта не рекомендуется.
Инструкции, содержащиеся в следующем разделе, подключают сертификаты томов к контейнерам с помощью параметра командной строки Docker -v . Вы можете добавить сертификаты в образы контейнеров с COPY помощью команды в Dockerfile, но не рекомендуется. Копирование сертификатов в образ не рекомендуется по следующим причинам:
- Трудно использовать тот же образ для тестирования с сертификатами разработчика.
- Трудно использовать тот же образ для размещения с рабочими сертификатами.
- Существует значительный риск раскрытия сертификатов.
Выполнение предварительно созданных образов контейнеров с помощью 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=8001 -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
Для 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=8001 -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://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -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.
Developing ASP.NET Core Applications with Docker over HTTPS (Разработка приложений ASP.NET Core с применением Docker по протоколу HTTPS)
Сведения о разработке приложений ASP.NET Core с помощью Docker по протоколу HTTPS см. в статье о разработке приложений ASP.NET Core с помощью HTTPS в контейнерах Docker.
См. также
- 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 основных приложений с помощью Docker по протоколу HTTPS".
Для работы с этим примером требуется Docker 17.06 или клиент Docker более поздней версии.
Необходимые компоненты
Текущий пакет SDK для .NET.
Сертификаты
Сертификат из центра сертификации требуется для размещения в рабочей среде для домена. Let's Encrypt — это центр сертификации, который предлагает бесплатные сертификаты.
В этом документе используются самозаверяемые сертификаты разработки для размещения предварительно созданных образовlocalhost. Инструкции аналогичны использованию рабочих сертификатов. Созданный сертификат dotnet dev-certs используется только для использования и localhost не должен использоваться в среде, такой как Kubernetes. Для поддержки HTTPS в кластере Kubernetes используйте средства, предоставляемые управлением сертификатами TLS в кластере , для настройки TLS в модулях pod.
Используется dotnet dev-certs для создания самозаверяемых сертификатов для разработки и тестирования.
Для рабочих сертификатов:
- Средство
dotnet dev-certsне требуется. - Сертификаты не должны храниться в расположении, используемом в инструкциях. Любое расположение должно работать, хотя хранение сертификатов в каталоге сайта не рекомендуется.
Инструкции, содержащиеся в следующем разделе, подключают сертификаты томов к контейнерам с помощью параметра командной строки Docker -v . Вы можете добавить сертификаты в образы контейнеров с COPY помощью команды в Dockerfile, но не рекомендуется. Копирование сертификатов в образ не рекомендуется по следующим причинам:
- Трудно использовать тот же образ для тестирования с сертификатами разработчика.
- Трудно использовать тот же образ для размещения с рабочими сертификатами.
- Существует значительный риск раскрытия сертификатов.
Выполнение предварительно созданных образов контейнеров с помощью 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=8001 -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://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -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://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -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.
Developing ASP.NET Core Applications with Docker over HTTPS (Разработка приложений ASP.NET Core с применением Docker по протоколу HTTPS)
Сведения о разработке приложений ASP.NET Core с помощью Docker по протоколу HTTPS см. в статье о разработке приложений ASP.NET Core с помощью HTTPS в контейнерах Docker.
См. также
- Developing ASP.NET Core Applications with Docker over HTTPS (Разработка приложений ASP.NET Core с применением Docker по протоколу HTTPS)
dotnet dev-certs
ASP.NET Core