.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签发的证书在本地都是可信的。下载后到下载目录中安装:

bash 复制代码
mkcert-v1.4.4-windows-amd64.exe -install

安装成功成功。提示创建一个新的本地CA,本地CA现在已安装在系统信任存储中。

查看根证书位置

如果你想查看根证书位置,可以输入命令:

生成自签证书

直接跟多个要签发的域名或 ip 就行了,比如签发一个仅本机访问的证书(可以通过127.0.0.1和localhost,以及 ipv6 地址::1访问):

bash 复制代码
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的编辑代码

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);


    return
        Host.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 5001
                 serverOptions.ListenAnyIP(5001, listenOptions =>
                 {
                     listenOptions.UseHttps(x509);
                 });

                 //http 5000   
                 serverOptions.ListenAnyIP(5000);
             });

             webBuilder.UseStartup<Startup>();
         });
}

完成https自签名证书配置。

注意:PEM证书在Windows环境下,无论是开发还是部署,均无法正常使用。必须在liunx环境下使用。Windows环境下的证书格式为pfx。

相关推荐
明天也要努力学习3 小时前
HTTP 协议的基本格式和 fiddler 的用法
网络协议·http·fiddler
cpolar技术支持7 小时前
网关加 gzip,同时开启 chunked,下载回来的包解不开:把两层编码的解压顺序与长度核对做成只读页
python·http·网络编程·socket·内网穿透
Tel199253080049 小时前
温度湿度信号转WiFi/MQTT/Modbus TCP采集模块 无线传输
网络·网络协议·tcp/ip·工业自动化·工控设备
lazy H12 小时前
【计算机网络】第 13 篇:NAT 和端口映射是什么?为什么本地服务外网访问不了?
java·网络·网络协议·学习·计算机网络·408
低慢小uav13 小时前
(已解决)Zynq芯片lwip协议栈,使用tcp作为服务器Service,接收大量数据时,长度接收正常,接收对数据校验,校验和异常分析
网络协议·tcp/ip·fpga开发
骑着蜗牛撵大象32715 小时前
手写一个 HTTP 服务器:从 socket 到 epoll,Linux 上到底怎么把请求变成响应
linux·服务器·网络·http·epoll·socket编程·并发模型
沫璃染墨15 小时前
从零入门计算机网络系列(十):HTTP协议进阶——从资源路径解析到状态码与请求头详解
linux·运维·服务器·网络·c++·http
|_⊙16 小时前
应用层协议HTTP与HTTPS
网络·网络协议·http
zxanz116 小时前
证书运维自动化,守住业务 HTTPS 底线
运维·https·自动化
Lsetea17 小时前
Git访问HTTPS证书不受信任:用URL级sslCAInfo限定私有CA范围
git·https·开发工具·ssl证书·ca证书