ASP.NET Core 預設使用 HTTPS。 HTTPS 依賴 憑證, 信任、身分識別和加密。
本文件說明如何使用 HTTPS 執行預先建置的容器映像。
如需開發案例,請參閱使用 Docker over HTTPS 開發 ASP.NET Core 應用程式。
此範例需要 Docker 17.06 或更新版本的 Docker 用戶端 。
必要條件
本文件的部分指示需要 .NET Core 2.2 SDK 或更新版本。
憑證
網域的生產託管需要憑證授權單位提供的憑證。 Let's Encrypt 是提供免費憑證的憑證授權單位。
本文件使用自我簽署的開發憑證,透過 localhost 裝載預先建置的映像。 這些指示類似於使用生產憑證。
針對生產憑證:
- 不需要
dotnet dev-certs工具。 - 憑證不需要儲存在指示中使用的位置。 將憑證儲存在網站目錄以外的任何位置。
下一節中所包含的指示會使用 volumes 中的 屬性,將憑證掛接至容器。您可以在 COPY 中使用 命令將憑證新增至容器映像,但不建議這麼做。 基於下列理由,不建議將憑證複製到映像:
- 這會使使用相同映像透過開發人員憑證進行測試變得困難。
- 使用生產憑證進行裝載時,很難使用相同的映像。
- 揭露憑證有重大風險。
使用 docker compose 以 HTTPs 支援啟動容器
針對您的作業系統組態,使用下列指示。
使用 Linux 容器的 Windows
產生憑證並設定本機電腦:
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 檔案中指定的密碼必須符合憑證所使用的密碼。
使用針對 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
在 Linux 上, dotnet dev-certs https --trust 需要 .NET 9 或更新版本的 SDK。 針對 .NET 8.0.401 或更早版本的 SDK 上的 Linux,請參閱 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 檔案中指定的密碼必須符合憑證所使用的密碼。
使用針對 HTTPS 設定的 ASP.NET Core 啟動容器:
docker-compose -f "docker-compose.debug.yml" up -d
另請參閱
ASP.NET Core 預設使用 HTTPS。 HTTPS 依賴 憑證, 信任、身分識別和加密。
本文件說明如何使用 HTTPS 執行預先建置的容器映像。
如需開發案例,請參閱使用 Docker over HTTPS 開發 ASP.NET Core 應用程式。
此範例需要 Docker 17.06 或更新版本的 Docker 用戶端 。
必要條件
本文件的部分指示需要 .NET Core 2.2 SDK 或更新版本。
憑證
網域的生產託管需要憑證授權單位提供的憑證。 Let's Encrypt 是提供免費憑證的憑證授權單位。
本文件使用自我簽署的開發憑證,透過 localhost 裝載預先建置的映像。 這些指示類似於使用生產憑證。
針對生產憑證:
- 不需要
dotnet dev-certs工具。 - 憑證不需要儲存在指示中使用的位置。 將憑證儲存在網站目錄以外的任何位置。
下一節中所包含的指示會使用 volumes 中的 屬性,將憑證掛接至容器。您可以在 COPY 中使用 命令將憑證新增至容器映像,但不建議這麼做。 基於下列理由,不建議將憑證複製到映像:
- 這會使使用相同映像透過開發人員憑證進行測試變得困難。
- 使用生產憑證進行裝載時,很難使用相同的映像。
- 揭露憑證有重大風險。
使用 docker compose 以 HTTPs 支援啟動容器
針對您的作業系統組態,使用下列指示。
使用 Linux 容器的 Windows
產生憑證並設定本機電腦:
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
只有在 macOS 和 Windows 上才支援 dotnet dev-certs https --trust。 您必須以您的發行版本支援的方式信任 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 檔案中指定的密碼必須符合憑證所使用的密碼。
使用針對 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
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