如何在 .Net Core 2.1 中为 Staging/Production 配置 ssl

Wou*_*Rij 4 c# asp.net-core-2.1

我正在使用 .NET Core 2.1 构建一个 mvc Web 应用程序。在 ListenOptions.UseHttps 下的 .net core 文档中,它声明它将使用默认证书配置 Kestrel(此处找到文档)。

Kestrel 在哪里寻找这个默认证书?如何替换它以进行登台(我想在其中使用我们的演示站点证书之一)?对于生产(我再次拥有不同的证书)?

我的 Program.cs 内容现在看起来像:

public class Program
{
    public static void Main(string[] args)
    {
        var builder = WebHost.CreateDefaultBuilder(args); //This sets up Kestrel and adds appsettings.json to the configuration
        builder.UseStartup<Startup>();
        builder.ConfigureAppConfiguration((context, configurationBuilder) =>
        {
            var env = context.HostingEnvironment;
            configurationBuilder.SetBasePath(env.ContentRootPath);
        });

        var host = builder.Build();
        host.Run();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的 Startup.cs 配置方法

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
        app.UseHsts();
    }
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseMvc(ConfigureRoutes);
}
Run Code Online (Sandbox Code Playgroud)

该应用程序在 localhost 上使用 https 运行良好。我在寻找一种方式通过配置来解决这个问题(如的appSettings。{} ENV上传.json?),而不是通过自定义方法,比如这一个

Wou*_*Rij 6

xneg提到的文档帮助解决了这个问题:Kestrel web server implementation in ASP.NET Core

通过如下修改 appsettings.DockerDevelopment.json 文件设法让它工作:

{
  "Kestrel": {
    "EndPoints": {
      "HttpsDefaultCert": {
        "Url": "https://*:443"
      },
      "Http": {
        "Url": "http://*:80"
      }
    },
    "Certificates": {
      "Default": {
        "Path": "certifcate.pfx",
        "Password": "*********"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Kestrel 现在可以在 Docker 容器和临时服务器上使用 https 运行我的应用程序。