【问题标题】:.Net Core 3.1 API SSL Configuration for DockerDocker 的 .Net Core 3.1 API SSL 配置
【发布时间】:2021-10-16 17:22:49
【问题描述】:

我需要为我的 api 网关使用 SSL 证书并在 docker 上运行它。我想为 5000 端口使用 ssl 证书。由于我所有使用端口的服务都以 5000 开头,所以我只为网关应用 SSL。

假设域是 api.fabrikam.com:5000 并且 docker 容器开始如下:

docker run   -e ASPNETCORE_ENVIRONMENT='Production' -d -p 5000:5000 123456.dkr.ecr.eu-central-1.amazonaws.com/gateway:latest

还有在 CreateWebHostBuilder 方法中;

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((host, config) => {
                    config.AddJsonFile($"configuration.{host.HostingEnvironment.EnvironmentName}.json");
                })
                 .UseKestrel(options =>
                 {
                     options.Listen(IPAddress.Loopback, 5000);  // http:localhost:5000
                     options.Listen(IPAddress.Any, 80);         // http:*:80
                     options.Listen(IPAddress.Loopback, 443, listenOptions =>
                     {
                         listenOptions.UseHttps("api.fabrikam.com.pfx", "password");
                     });
                 })
                .UseStartup<Startup>();

但是当我打电话给https://api.fabrikam.com:5000 时,一点运气都没有。 任何帮助都会很棒。 谢谢。

【问题讨论】:

  • 5000 是 HTTP 端口。 HTTPS 在 5001 上运行

标签: c# docker ssl asp.net-core-webapi kestrel-http-server


【解决方案1】:

您的启动命令应如下所示:

docker run --rm -it
       -p 5000:80 
       -p 5001:443 
       -e ASPNETCORE_URLS="https://+;http://+" 
       -e ASPNETCORE_HTTPS_PORT=5001 
       -e ASPNETCORE_ENVIRONMENT=Development 
       -v $Env:APPDATA\microsoft\UserSecrets\:
          /root/.microsoft/usersecrets 
       -v $Env:USERPROFILE\.aspnet\https:
          /root/.aspnet/https/ 
       backend:latest

更多细节可以参考这个博客,应该对你有用。

Set up HTTPS on local with .NET Core and Docker

【讨论】:

  • 首先,感谢您的时间和兴趣。我试图在生产中实现这一点,而不是在本地环境中。我什至不在乎当地的环境。由于我使用 IIS 在本地进行开发。我猜它在生产服务器上的配置不一样。
  • @MonkeyDLuffy 我的意思是你有没有尝试我提供的关于端口(5000 和 5001)的命令?
  • @MonkeyDLuffy 即使在生产环境中,只需替换 aspnet_environment 的参数,命令格式相同。
猜你喜欢
  • 2020-08-22
  • 2020-11-24
  • 2020-05-12
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
  • 2020-05-20
  • 1970-01-01
相关资源
最近更新 更多