.NET 8 kestrel 配置PEM,实现内网https
一、生成证书
mkcert 是一个简单的工具,用于制作本地信任的开发证书。它不需要配置。
mkcert官方仓库地址:GitHub - FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names you'd like.
简化我们在本地搭建 https 环境的复杂性,无需操作繁杂的 openssl 实现自签证书了,这个工具就可以帮助我们自签证书,在本机使用还会自动信任 CA,非常方便。
下载安装
下载地址:Releases · FiloSottile/mkcert · GitHub
安装mkcert。将CA证书加入本地可信CA,使用此命令,就能帮助我们将mkcert使用的根证书加入了本地可信CA中,以后由该CA签发的证书在本地都是可信的。下载后到下载目录中安装:
mkcert-v1.4.4-windows-amd64.exe -install
安装成功成功。提示创建一个新的本地CA,本地CA现在已安装在系统信任存储中。
查看根证书位置
如果你想查看根证书位置,可以输入命令:
生成自签证书
直接跟多个要签发的域名或 ip 就行了,比如签发一个仅本机访问的证书(可以通过127.0.0.1
和localhost
,以及 ipv6 地址::1
访问):
mkcert-v1.4.4-windows-amd64.exe localhost 127.0.0.1 ::1 192.168.2.25
在mkcert软件同目录下,生成了自签证书。如图所示:
二、NET 8 kestrel 使用证书
证书复制到wwwoort下
例如wwwoort/pem下
Program.cs的编辑代码
public static IHostBuilder CreateWebHostBuilder(string[] args)
{//读取证书var rootpath = Directory.GetCurrentDirectory();var certPem = File.ReadAllText(rootpath + "/wwwroot/pem/localhost+3.pem");var keyPem = File.ReadAllText(rootpath + "/wwwroot/pem/localhost+3-key.pem");var x509 = X509Certificate2.CreateFromPem(certPem, keyPem);returnHost.CreateDefaultBuilder(args).ConfigureAppConfiguration((hostingContext, config) =>{config.AddInMemoryCollection(new Dictionary<string, string> { { "HostRoot", hostingContext.HostingEnvironment.ContentRootPath } });}).ConfigureLogging((hostingContext, logging) =>{logging.ClearProviders();logging.AddConsole();logging.AddWTMLogger();}).ConfigureWebHostDefaults(webBuilder =>{webBuilder.ConfigureKestrel(serverOptions =>{//https 5001serverOptions.ListenAnyIP(5001, listenOptions =>{listenOptions.UseHttps(x509);});//http 5000 serverOptions.ListenAnyIP(5000);});webBuilder.UseStartup<Startup>();});
}
完成https自签名证书配置。