通过 HTTPS 在 Docker 上宿主 ASP.NET Core 映像Hosting ASP.NET Core images with Docker over HTTPS

,ASP.NET Core 使用 HTTPS。HTTPS依赖于信任、标识和加密的。

本文档介绍如何通过 HTTPS 运行预生成的容器映像。

若要开发方案,请参阅通过 HTTPS 上的 Docker 开发 ASP.NET Core 应用程序

此示例需要 docker 或更高版本的docker 客户端

本文档中的某些说明需要或更高版本。

针对域的生产主机需要的证书。Let's Encrypt是提供免费证书的证书颁发机构。

本文档使用来托管 上的预建映像。说明类似于使用生产证书。

  • dotnet dev-certs 工具不是必需的。
  • 证书不需要存储在说明中使用的位置。尽管不建议在网站目录中存储证书,但任何位置都应有效。

以下部分中包含的说明使用 Docker 的 -v 命令行选项将证书装载到容器中。可以使用Dockerfile中的 COPY 命令将证书添加到容器映像中,但不建议这样做。由于以下原因,不建议将证书复制到映像:

  • 使用同一个映像测试开发人员证书非常困难。
  • 使用同一个映像通过生产证书进行托管很困难。

使用以下有关操作系统配置的说明。

生成证书并配置本地计算机:

在上述命令中,将 替换为密码。

运行容器映像,并为 HTTPS 配置 ASP.NET Core:

  1. docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp
  2. docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/core/samples:aspnetapp

密码必须与用于证书的密码匹配。

生成证书并配置本地计算机:

在上述命令中,将 替换为密码。

运行容器映像,并为 HTTPS 配置 ASP.NET Core:

  1. docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp
  2. docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/core/samples:aspnetapp

密码必须与用于证书的密码匹配。

生成证书并配置本地计算机:

在上述命令中,将 { password here } 替换为密码。

运行容器映像,并为 HTTPS 配置 ASP.NET Core:

密码必须与用于证书的密码匹配。