如何将ASP.NET Core Kestrel服务器配置为使用HTTPS进行安全部署?

2026-03-30 14:221阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计574个文字,预计阅读时间需要3分钟。

如何将ASP.NET Core Kestrel服务器配置为使用HTTPS进行安全部署?

ASP.NET Core Kestrel 部署 HTTPS,在 program.cs 中替换 CreateHostBuilder 为:

csharppublic static IHostBuilder CreateHostBuilder(string[] args)=> Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProvider());

ASP.NET Core Kestrel部署HTTPS

1,在program.cs中CreateHostBuilder 替换成如下内容:

如何将ASP.NET Core Kestrel服务器配置为使用HTTPS进行安全部署?

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureServices((context, services) => { // 这是在appsettings中配置后加载配置 // 当然也可以在startup中加载配置 services.Configure<KestrelServerOptions>( context.Configuration.GetSection("Kestrel")); }) .ConfigureWebHostDefaults(webBuilder => { // 这是在代码中配置,而不是配置文件配置 //webBuilder.UseKestrel(option => { // option.Listen(IPAddress.Loopback, 80); // option.Listen(IPAddress.Loopback, 443, // listenOptions => // { // listenOptions.UseHttps("localhostcert.pfx", "localhost"); // }); //});.UseUrls("*:443") webBuilder.UseStartup<Startup>(); });

public void ConfigureServices(IServiceCollection services) { services.Configure<KestrelServerOptions>( Configuration.GetSection("Kestrel")); }

上面两段代码描述的都是Kestrel服务的option从配置文件中读取 紧接着在startup中增加 app.UseHttpsRedirection(); app.UseHsts();//默认是开启的,如果是,就不用管它 2,在配置文件appsettings.json中增加,这是单独的配置节点 ,其中path,是pfx文件的位置,password是证书的密码,在阿里云申请的证书,下载iis版的就有这两个。

"Kestrel": { "Limits": { "MaxRequestBodySize": 9223372036854775807, "MaxRequestBufferSize": 9223372036854775807, "MaxRequestLineSize": 9223372036854775807 }, "Endpoints": { "Https": { "Url": "*:443", "Certificate": { "Path": "/xxxx.pfx", "Password": "xxx" } } } }

这里的配置项可以参考微软的文档,基本上大多数需要代码显式指定的配置在appsettings.json中都是可以直接配置的 参考文档地址:docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#endpoint-configuration

Linux ASP.NET Core程序配置127.0.0.1:5000; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

nginx的主配置文件是 /etc/nginx/nginx.conf 直接修改这个文件,分别对N个需要ssl的站点进行配置,如下,监听端口都是443,区别是server_name ,根据需要配置的域名,分别写对应的server_name, 加粗部分是需要特别关注的,pem,和key这两 如果是在阿里云申请的ssl,下载的时候选择 nginx版的,就包含下边需要的两文件,可以放到任意位置,这里填写的是这两文件的路径,location里边的内容是转发的本地端口对应的就是域名对应的子网站。子网站必须是发布了的,可访问的站点,另外需要特别注意一下子网站不需要任何证书,只需要可以访问即可

本文共计574个文字,预计阅读时间需要3分钟。

如何将ASP.NET Core Kestrel服务器配置为使用HTTPS进行安全部署?

ASP.NET Core Kestrel 部署 HTTPS,在 program.cs 中替换 CreateHostBuilder 为:

csharppublic static IHostBuilder CreateHostBuilder(string[] args)=> Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProvider());

ASP.NET Core Kestrel部署HTTPS

1,在program.cs中CreateHostBuilder 替换成如下内容:

如何将ASP.NET Core Kestrel服务器配置为使用HTTPS进行安全部署?

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureServices((context, services) => { // 这是在appsettings中配置后加载配置 // 当然也可以在startup中加载配置 services.Configure<KestrelServerOptions>( context.Configuration.GetSection("Kestrel")); }) .ConfigureWebHostDefaults(webBuilder => { // 这是在代码中配置,而不是配置文件配置 //webBuilder.UseKestrel(option => { // option.Listen(IPAddress.Loopback, 80); // option.Listen(IPAddress.Loopback, 443, // listenOptions => // { // listenOptions.UseHttps("localhostcert.pfx", "localhost"); // }); //});.UseUrls("*:443") webBuilder.UseStartup<Startup>(); });

public void ConfigureServices(IServiceCollection services) { services.Configure<KestrelServerOptions>( Configuration.GetSection("Kestrel")); }

上面两段代码描述的都是Kestrel服务的option从配置文件中读取 紧接着在startup中增加 app.UseHttpsRedirection(); app.UseHsts();//默认是开启的,如果是,就不用管它 2,在配置文件appsettings.json中增加,这是单独的配置节点 ,其中path,是pfx文件的位置,password是证书的密码,在阿里云申请的证书,下载iis版的就有这两个。

"Kestrel": { "Limits": { "MaxRequestBodySize": 9223372036854775807, "MaxRequestBufferSize": 9223372036854775807, "MaxRequestLineSize": 9223372036854775807 }, "Endpoints": { "Https": { "Url": "*:443", "Certificate": { "Path": "/xxxx.pfx", "Password": "xxx" } } } }

这里的配置项可以参考微软的文档,基本上大多数需要代码显式指定的配置在appsettings.json中都是可以直接配置的 参考文档地址:docs.microsoft.com/zh-cn/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#endpoint-configuration

Linux ASP.NET Core程序配置127.0.0.1:5000; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

nginx的主配置文件是 /etc/nginx/nginx.conf 直接修改这个文件,分别对N个需要ssl的站点进行配置,如下,监听端口都是443,区别是server_name ,根据需要配置的域名,分别写对应的server_name, 加粗部分是需要特别关注的,pem,和key这两 如果是在阿里云申请的ssl,下载的时候选择 nginx版的,就包含下边需要的两文件,可以放到任意位置,这里填写的是这两文件的路径,location里边的内容是转发的本地端口对应的就是域名对应的子网站。子网站必须是发布了的,可访问的站点,另外需要特别注意一下子网站不需要任何证书,只需要可以访问即可