概述
文章目录
- 前言
- 一、证书获取
- 二、使用步骤
- 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前言一、证书获取二、使用步骤总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复