我是靠谱客的博主 多情花瓣,最近开发中收集的这篇文章主要介绍.netcore 5 linux部署启用https前言一、证书获取二、使用步骤总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 前言
  • 一、证书获取
  • 二、使用步骤
    • 1.Startup.cs
    • 2.Program.cs
    • 2.userdefined.json
  • 总结


前言

.netcore 5 部署linux系统后开启https,与原本的.netcore2.1有一些差别


前提条件:默认创建web项目的时候已经勾选启用https

一、证书获取

笔者是从腾讯云购买的域名,同时可以申请免费ssl证书,有效期一年,过期之后可以重新免费申请。申请之后,下载证书文件,.netcore用到的证书与iis的一样,所以直接取iis目录里面的pfx证书使用,注意:申请证书的时候需要输入密码,密码后续需要配合证书一起使用。

二、使用步骤

1.Startup.cs

在此文件中可以开启https重定向,当访问http的时候会自动重新向到https,下面方法我加了个配置文件来配置是否启用https重定向

示例代码仅包含关键部分:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
	//开启Https重定向
	if (ConfigurationJson.IsUseHttps)
	{
		app.UseHttpsRedirection();
	}
}

2.Program.cs

使用Kestrel服务注册监听证书,开启https服务
代码如下(示例):

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseKestrel(SetHostUrl);
                });
                
		/// <summary>
        /// 配置Kestrel Https
        /// </summary>
        /// <param name="options"></param>
        private static void SetHostUrl(KestrelServerOptions options)
        {
            var hostUrls = ConfigurationJson.HostUrl;
            foreach (var endpointKvp in hostUrls.Endpoints)
            {
                var name = endpointKvp.Key;
                var url = endpointKvp.Value;
                if (url.IsEnabled)
                {
                    var address = IPAddress.Parse(url.Address);
                    options.Listen(address, url.Port, opt =>
                    {
                        //如果存在证书则启用https
                        if (url.Certificate != null)
                        {
                            switch (url.Certificate.Source)
                            {
                                case "pfx":
                                    if (!File.Exists(url.Certificate.Path))
                                        throw new FileNotFoundException($"未找到证书文件{url.Certificate.Path}");

                                    opt.UseHttps(url.Certificate.Path, url.Certificate.Password);
                                    break;
                                default:
                                    throw new NotSupportedException($"暂不支持{url.Certificate.Source}证书类型");
                            }
                            //opt.UseConnectionLogging();
                        }
                    });
                    //options.UseSystemd();
                }
            }
        }

2.userdefined.json

上述使用到的配置文件
代码如下(示例):

  /*Kestrel配置Host Url信息,同时支持HTTPS和HTTP*/
  "HostUrl": {
    "Endpoints": {
      "Http": {
        "IsEnabled": true,
        "Address": "0.0.0.0",
        "Port": "5000"
      },
      "Https": {
        "IsEnabled": false,
        "Address": "0.0.0.0",
        "Port": "5001",
        "Certificate": {
          "Source": "pfx",
          "Path": "config/apliu.xyz.pfx",
          "Password": "+HMYHJxTEX4="
        }
      }
    }
  },

<font color#999AAA >演示地址:https://apliu.xyz


总结

关键代码是Program.cs中的启用kestrel代码

webBuilder.UseKestrel(SetHostUrl);

options.Listen(address, url.Port, opt =>
{
	opt.UseHttps(url.Certificate.Path, url.Certificate.Password);
});

最后

以上就是多情花瓣为你收集整理的.netcore 5 linux部署启用https前言一、证书获取二、使用步骤总结的全部内容,希望文章能够帮你解决.netcore 5 linux部署启用https前言一、证书获取二、使用步骤总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部