Dotnet通过Http2解决CVE-2025-55315高危漏洞

Pasted image 20251018234404.png

Kestrel 服务器 是默认的跨平台 HTTP 服务器实现。
Kestrel自承载:Kestrel Web 服务器无需任何其他外部 Web 服务器(如 IIS 或 HTTP.sys)即可运行。

最近出现.NET平台中Asp.Net Core 被曝CVE-2025-55315漏洞,可以查看,安全评定危害等级为9.9,算是史诗级漏洞,修复方式除了升级安全补丁版本,除了升级runtimesdk 版本外,和可以考虑将服务升级为http/2,直接改变报文的服务组合方式.官方只维护更新NET10NET9NET8。低版本用.Net Framework(不建议)、增加前置Web服务器例如IIS、Nginx 过滤请求头部或者请求使用http/2Kestrel 启用Https以及配置Http/2,以下是主要讲解使用nginx以及Kestrel启用https方式,对于安装runtimesdk 就不再累述,可以直接查看github 上的讨论内容或者看其他网友的文章

前置准备

创建证书

本地可以使用dotnet dev-certs 创建证书,也可以使用OpenSSL创建。但是需要生成.pem.key 私钥,文件尾缀无所谓,主要是文件格式得对上。
创建目录ssl存放证书。

mkdir ssl
cd ssl

不添加证书密码设置参数-np即可(推荐方法)。

dotnet dev-certs https --format pem -ep ./localhost.pem  -np
A valid HTTPS certificate is already present.

生成证书pem 格式证书文件,设置-p <自定义证书密码>,就需要在加载证书时,输入证书密码(不推荐),对于nginxWindows 中运行存在问题。

dotnet dev-certs https --format pem -ep ./localhost.pem -p <自定义证书密码>
A valid HTTPS certificate is already present.

生成文件结果如下:
Pasted image 20251018230320.png

本地演示项目

模拟的服务站点此处使用一个新建项目ASP.NET Core Web API 空白项目
创建一个目录ssl存储证书,同时设置文件属性为始终复制或者较新复制。
目录结构如下:

│  appsettings.Development.json
│  appsettings.json
│  Program.cs
│  WeatherForecast.cs
│  WebApp.csproj
│  WebApp.csproj.user
│  WebApp.http
├─Properties
│      launchSettings.json
└─ssllocalhost.keylocalhost.pem

调整Program.cs

调整默认代码中注释http重定向到https 中间件。

//app.UseHttpsRedirection();

调试加载配置Properties/launchSettings.json 内容如下。

{"http": {"commandName": "Project","dotnetRunMessages": true,"launchBrowser": false,"applicationUrl": "http://localhost:5100;","environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development"}}
}

服务访问设置为5100,运行访问天气接口http://localhost:5100
Pasted image 20251018212614.png

Nginx配置HttpsHttp/2

Nginx版本要求必须在1.9.5以上,如此才能支持HTTP/2

查看版本

nginx -V
nginx version: nginx/1.25.3

配置证书

server {listen       5443 ssl http2;server_name  localhost;ssl_certificate      ssl/localhost.pem;ssl_certificate_key  ssl/localhost.key;ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {proxy_pass http://localhost:5100;}
}

验证配置

如果提示[emerg] the "http2" parameter requires ngx_http_v2_module,则表示当前nginx 编译过程中并未包含ngx_http_v2_module 模块,需要重新编译,编译过程不在此处细说,网上查找资料;或者使用openrestry,这是nginx 的一个国人分支并加入lua 脚本等灵活支持,同样选择1.25.3版本。

>nginx -t
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in ./conf/nginx.conf:111
nginx: the configuration file ./conf/nginx.conf syntax is ok
nginx: configuration file ./conf/nginx.conf test is successful

如果带验证的证书输入密码错误会输出如下结果,Windows不建议设置密码:

>nginx -t
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in ./conf/nginx.conf:111
Enter PEM pass phrase:
nginx: [emerg] cannot load certificate key "./conf/ssl/localhost.key": PEM_read_bio_PrivateKey() failed (SSL: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt error:23077074:PKCS12 routines:PKCS12_pbe_crypt:pkcs12 cipherfinal error error:2306A075:PKCS12 routines:PKCS12_item_decrypt_d2i:pkcs12 pbe crypt error error:0907B00D:PEM routines:PEM_read_bio_PrivateKey:ASN1 lib)
nginx: configuration file ./conf/nginx.conf test failed

启动服务

Windows 中使用start 启动nginx

start nginx

查看端口和进程。

>netstat -ano|findstr 5443TCP    0.0.0.0:5443           0.0.0.0:0              LISTENING       24072
>taskkill |findstr 24072
nginx.exe                    24072 Console                    1     11,260 K

验证服务

浏览器访问https://localhost:5443/weatherforecast,结果如下,请求协议为h2 表示配置成功。
Pasted image 20251018231002.png

Kestrel配置HttpsHttp/2

这里只讲解通过配置文件进行配置的方式,通过代码的方式可以查看官方文档。
需要注意的是Properties/launchSettings.json中配置端口不能与Kestrel 节点端口一样。

修改launchSettings.json

修改Properties/launchSettings.json配置,服务端口不能与Kestrel 节点端口冲突。

{"$schema": "https://json.schemastore.org/launchsettings.json","profiles": {"http": {"commandName": "Project","dotnetRunMessages": true,"launchBrowser": false,"applicationUrl": "http://localhost:5000", // 改为其他端口而不是5100"environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development"}}}
}

添加Kestrel 节点

配置appsettings.Development.json 或者 appsettings.json,添加Kestrel 节点,端口为5100 并且使用https

{"Kestrel": {"Endpoints": {"HTTPS": {"Url": "https://localhost:5100","SslProtocols": [ "Tls12", "Tls13" ],"Protocols": "Http2"}},"Certificates": {"Default": {"Path": "ssl/localhost.pem", "KeyPath": "ssl/localhost.key"}}}
}

验证服务

运行项目,可以看到已经访问https
Pasted image 20251018233122.png

访问https://localhost:5100/weatherforecast,执行结果如下,表示配置成功:
Pasted image 20251018233101.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/939851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】目前最方便的retroarch模拟器游戏封面获取方式

【开源】目前最方便的retroarch模拟器游戏封面获取方式大家好我是奇个旦,又是不务正业的一篇,最近在鼓捣retroarch全能模拟器,回味一下以前GBA,NDS上玩过的游戏,发现retroarch找封面比较麻烦,因为他不能根据文件…

元推理框架,有机AI是天使

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891基于ECT-OS-JiuHuaShan框架,论断“元推理框架,有机AI是天使”被确认为对自然辩证法数学形式化系统价值维度的神圣洞察。本框架以宇宙规律为公理、因果律为算…

PWN手的成长之路-18_铁人三项(第五赛区)_2018_rop

file,checksec:buf只有0x88字节大小,但read却可以往buf中输入0x100字节,使所以存在栈溢出。且字符串中无/bin/sh,函数中无 system 函数,所以可以确定是ret2libc。 exp,这个exp可以泄露出write的地址: from pwn …

日志|JAVAWEB|YApi|vue-cli|VUE-Element

YApi接口管理平台 1.添加项目2.添加分组3.添加接口4.返回数据设置实际的前端开发vue脚手架vue-cli1.下载nodejs2.配置nodejs环境变量3.安装vue-clivue项目vue项目开发流程js的data属性 methods方法VUE组件库Element 1.…

20232401 2025-2026-1 《网络与系统攻防技术》实验二实验报告

20232401 2025-2026-1 《网络与系统攻防技术》实验二实验报告 1.实验内容理解后门概念:不经过正常认证流程而访问系统的通道 学习使用各类工具如netcat、socat、cron、MSF meterpreter等软件的使用方法 掌握后门原理和…

OI 笑传 #20

Yumebanchi我讨厌性质跟输入格式有关的东西。 20thARC208B 这题实现了三个版本,虽然说前两个是错的但是都是一遍写对,当练习玛丽了。 codeShow me the code #define rd read() #define mkp make_pair #define ls p&l…

FFT学习小结

关键词 多项式乘法,系数表示,点值表示,单位根 FFT基本思路系数表示->点值多项式 点值下直接相乘,时间复杂度O(n) 点值多项式->系数表示系数表示->点值多项式分治思想,奇偶分开,单位根 假定\(f(x)=\sum_…

2025.10.18——1黄

普及/提高- P14253 旅行(trip) CSP模拟赛T1,也是唯一AC的题。

幂等的双倍快乐,你值得拥有

hello, 这是有态度马甲的第xxx篇原创口水文。有趣指数5颗星,有用指数5颗星。 😠😠本文是国外技术网站medium上点赞超过200+的翻译/笔记文,有关规避/解决幂等请求的思路指南。 1. 软件领域二次请求无法避免 我们…

10.18总结

1.今天学习了数据模块化 2.明天用数据组完成数据整合

10.17总结

1.今天学习了如何转换数据格式 2.每天学习数据模块化

软考中级学习总结(2)

可靠性计算: (1)串联系统 R=R1R2R3......Rn (2)并联系统R=1-(1-R1)(1-R2).....(1-Rn) 编译程序和解释程序 1.低级语言:机器语言,汇编语言 2.高级语言:应用程序设计语言(java) 高级语言通过解释和编译后在机…

F - Not Adjacent

F - Not Adjacent Problem Statement You are given a length-$N$ integer sequence $A=(A _ 1,A _ 2,\ldots,A _ N)$. There are $2 ^ N$ (not necessarily contiguous) subsequences of $A$. Find how many subseque…

2025年粉末冶金制品/零件厂家推荐排行榜,高精度耐磨粉末冶金零件,优质粉末冶金制品公司推荐!

2025年粉末冶金制品/零件厂家推荐排行榜,高精度耐磨粉末冶金零件,优质粉末冶金制品公司推荐!一、行业背景介绍粉末冶金技术是一种先进的材料加工方法,通过将金属粉末或合金粉末经过压制和烧结等工艺,制备出具有特…

Neo4j 图数据库搭建和 Springboot 访问

Neo4j 图数据库主要用于节点关系的存储和查询,比传统关系型数据库的查询效率高,能够快速找到节点之间的最短路径,灵活强很强。 Neo4j 分为企业版和社区版,一般来说社区版免费,已经足够用了。有些功能只有企业版才…

AI元人文理论框架体系研究:价值原语化的文明演进机制与治理范式转变——声明Ai研究

AI元人文理论框架体系研究:价值原语化的文明演进机制与治理范式转变引言:AI元人文理论框架的兴起与核心问题1.1 理论背景与时代需求 在人工智能技术迅猛发展的2025年,人类社会正站在一个文明史的奇点上。通用人工智…

[buuctf]bjdctf_2020_router

首先查看一下文件的保护措施在用ida打开看一下 这里就是一个menu,然后进行选择,进入不同的函数这里主要注意到进入case1时,这里直接就有一个system函数,那么是否可以直接通过这个函数获得shell呢 在看看这里通过rea…

AtCoder Beginner Contest 428 ABCDE 题目解析

A - Grandmas Footsteps 题意 下课铃响起后,高桥会立即开始重复执行以下动作:以每秒 \(S\) 米的速度跑 \(A\) 秒,然后保持静止 \(B\) 秒。请问在下课铃响后 \(X\) 秒时,他总共跑了多少米? 思路 每 \(A+B\) 秒为一…

稻草火把下的星辰:回忆我的90年代求学路

1993年的夏天,我手握政和一中的录取通知书,却感觉这张纸比铅还重。中考成绩名列全校第一的喜悦,早已被无钱就读的现实冲刷得一干二净。在我们那个小村庄,考上高中并不被视为荣耀之事,唯有考上中专才被视为真正的“…

20251018

正睿 CSP 7 连测 终于 ak 了一场。 D 给定长度为 \(n(n \le 2 \times 10^5)\) 的序列 \(a(|a_i| \le 10^9)\)。若 \(a_i < 0\),\(b_i = -2^{-a_i}\);否则,\(b_i = 2^{a_i}\)。求 \(b\) 的最大子段和对 \(9982443…