首页 > 其他分享 >让.NET应用支持Http/3,QUIC协议

让.NET应用支持Http/3,QUIC协议

时间:2024-12-19 10:19:55浏览次数:6  
标签:Http https 证书 sudo http3 QUIC NET packages

1. 必备条件

1.1 .NET应用开启https

Programe.cs中配置了https支持,

var builder = WebApplication.CreateBuilder(args);

builder.WebHost.ConfigureKestrel((context, options) =>
{
    options.ListenAnyIP(5001, listenOptions =>
    {
        listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;
        listenOptions.UseHttps();
    });
});

或者appsettings.json中配置了https协议,建议在下面位置配置:

 "Kestrel": {
   "Endpoints": {
     "Https": {
       "Url": "https://*:7190",
       "Protocols": "Http1AndHttp2AndHttp3", //自签名证书不能用于http3,一旦满足条件,kestrel会自动添加Alt-svc标头
       "Certificate": {
         "Path": "your_cert.pfx",
         "Password": "your_cert_password"
       }
     }
   }
 }

经过测试Cloudflare的证书,可以用于开启服务端的http3,访问时可以看到Alt-Svc标头。

 1.2 . 系统环境

Windows11/Windows Server 2012

直接运行

Ubuntu 24.04

添加 Microsoft 软件包库

wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update

安装 libmsquic 包

sudo apt-get install libmsquic

我安装后查看是2.4版,配和.NET 9没有问题。

在安装之前,无论怎么配https, 都看不懂Alt-Svc标头,安装后就有了。

1.3 开放端口,UDP也要开

sudo ufw allow 443

2. 测试验证

2.1 浏览器请用Chrome或者Edge最新版

自签名证书

  • 浏览器不允许在 HTTP/3 上使用自签名证书,例如 Kestrel 开发证书,Cloudflare的10年证书

  • 如果一定要用可以用下面方式强制开启http3/quic

方式一

chrome.exe --origin-to-force-quic-on=localhost:6001 https://localhost:6001

方式二

Chrome://flags, 启用访问http3使用自签名证书。

Chrome Enable http3 on self signed cert

使用浏览器信任机构发行的证书:

  • 腾讯云/阿里云的免费证书可以。let's encrypt的证书可以。所以请在appsettings.json中使用这种证书。
  • 服务端配置了这种证书的,直接打开Chrome浏览器访问即可。

查看协议

http3,quic协议查看验证

如果没看到,不要着急,清下缓存,勾选停用缓存再看看,多试几次。

也可以换用Edge看看。

2.2 代理问题

  • 代理通常不支持http/3,请关闭代理
  • IPv4可能存在多级NAT,某些路由支持的NAT类型有限制,导致UDP打不开,不易连上http3. 建议使用IPv6测试,IPv6是Peer to Peer.

标签:Http,https,证书,sudo,http3,QUIC,NET,packages
From: https://www.cnblogs.com/jopny/p/18611171/DOTNET_APP_http3_support_on_linux

相关文章

  • 一款基于 .NET 开发的多功能流媒体管理控制平台
    前言今天大姚给大家分享一个基于.NET开发且开源(MITLicense)的多功能流媒体管理控制平台:AKStream。项目介绍AKStream是一个基于.NET开发且开源(MITLicense)的、功能全面的流媒体管理控制平台,集成了GB28181、RTSP、RTMP、HTTP等设备的推拉流控制、PTZ控制、音视频文件录制管......
  • C#/.NET/.NET Core技术前沿周刊 | 第 17 期(2024年12.09-12.15)
    前言C#/.NET/.NETCore技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NETCore领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等......
  • Netcat:网络中的瑞士军刀
    免责声明:使用本教程或工具,用户必须遵守所有适用的法律和法规,并且用户应自行承担所有风险和责任。文章目录一、引言二、简述三、Netcat功能?四、参数选项五、Netcat的常见功能六、高级用法多连接处理创建简单的代理七、Netcat安全性:滥用与防范八、总结与应用场景九.......
  • 全面掌握 .NET 软件架构:从基础到高级的技能提升路线
    作为一名.NET软件架构师,掌握从基础到高级的技术和设计能力是确保项目成功、提升开发团队效率、优化系统性能的关键。以下是一个系统化的学习路线,帮助你全面提升自己的架构技能。1.掌握.NET基础知识C#深入理解掌握C#的高级特性,如委托、事件、泛型、LINQ、反射、异......
  • 基于.NET WinForm开发的一款硬件及协议通讯工具
    前言今天大姚给大家分享一款基于.NETWinForm开发的一款硬件及协议通讯工具:PLC-CommunTools。项目介绍PLC-CommunTools是一款基于.NETWinForm开发的一款硬件及协议通讯工具,包含各类厂商的PLC协议及基础的TCP、串口通讯、IO口通讯等协议通讯功能的实现整合,注意还有一部分功能作......
  • Obfuscar:一款针对.NET程序的开源代码混淆工具
    关于ObfuscarObfuscar是一款针对.NET程序的开源代码混淆工具,该工具支持使用大量重载将.NET程序集中的元数据(包括方法、属性、事件、字段、类型和命名空间的名称)重命名为最小集合,在大多数情况下仅通过签名即可区分。例如,如果某个类仅包含接受不同参数的方法,则可以将它们全部重......
  • COMPSCI 4043 Systems and Networks
    Systemsand NetworksCOMPSCI4043December20221.   (a)    Expressthefollowing in 16-bittwo’s complement representation, giving your answers in hexadecimal. Showyourworking.i.       1000     ii.       -2000......
  • C#中HttpWebRequest的用法详解
    HttpWebRequest是一个常用的类,用于发送和接收HTTP请求。在C#中使用HttpWebRequest可以实现各种功能,包括发送GET和POST请求、处理Cookie、设置请求头、添加参数等 1、HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择。2、命名空间:System.Net3、HttpWeb......
  • WPF 用Vlc.DotNet.Wpf实现视频播放、停止、暂停功能
    1. NuGet添加 Vlc.DotNet.Wpf 2.  到VLC官网http://www.videolan.org/下载VLC播放器。因为本机是64位的,所以下载64位,如下所示:下载的是 安装后,到安装的路径下,拷贝如下文件夹:在wpf项目的exe文件夹下,本机是 bin\Debug\net8.0-windows,新建libvlc后,再建win-x64文......
  • netty echo例子
    netty使用方法:1.选择事件处理线程池EventLoopGroup,要与下面的管道选择对应名称,服务端要两个(一个是接收客户端连接,另一个是处理客户端请求),客户端只需要一个(处理客户端请求)2.创建Bootstrap对象,配置事件处理线程池(上面new的Group)3.设置管道(有NioSocketChannel,Ep......