ASP.NET Core 部署HTTPS

举报
Echo_Wish 发表于 2022/07/18 11:32:24 2022/07/18
【摘要】 ASP.NET Core Kestrel部署HTTPS1,在program.cs中CreateHostBuilder 替换成如下内容:public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .UseServ...

ASP.NET Core Kestrel部署HTTPS

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

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("https://*: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": "https://*:443",
        "Certificate": {
          "Path": "/xxxx.pfx",
          "Password": "xxx"
        }
      }
    }
  }

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

Linux ASP.NET Core程序配置https 下 nginx 的配置

server {
       listen 443;
       server_name serverName1.com;
       ssl on;
       root '/';
       ssl_certificate 'xxxx.pem';
       ssl_certificate_key 'xxxx.key';
       ssl_session_cache shared:SSL:1m;
       ssl_session_timeout  10m;
       ssl_ciphers PROFILE=SYSTEM;
       ssl_prefer_server_ciphers on;
       include /etc/nginx/default.d/*.conf;
       location / {
            proxy_pass http://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里边的内容是转发的本地端口对应的就是域名对应的子网站。子网站必须是发布了的,可访问的站点,另外需要特别注意一下
子网站不需要任何证书,只需要可以访问即可

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。