.NET Core TLS 协议指定被我钻了空子~~~

【导读】此前,测试小伙伴通过工具扫描,平台TLS SSL协议支持TLS v1.1,这不安全,TLS SSL协议至少是v1.2以上才行,想到我们早已将其协议仅支持v1.3,那应该非我们平台问题。

近日,第三方合作伙伴再次提到该高危安全问题,我依然自信的解释,与我们平台无关,应与openssl自身配置支持v1.1有关,但此问题必须得到解决,抱着半信半疑的态度,难道是代码问题?于是乎,开始探索之路,本文以ASP.NET Core 3.1.20作为示例

验证TLS SSL协议问题

由于平台相关配置启用太多,以排除带来的影响,我单独写了一个干净的web api,代码如下。

webBuilder.UseStartup<Startup>();
webBuilder.UseKestrel(options => 
{var sslCertPath = Path.Combine(AppContext.BaseDirectory, "ssl.pfx");options.Listen(IPAddress.Any, 5000,listenOption =>{listenOption.UseHttps(sslCertPath, "KSnRJkGPf@OVA8uDsY*D5EP4kd!AagLS84uNS~5@@u#dKrNxHC");});options.ConfigureHttpsDefaults(co =>{co.SslProtocols = SslProtocols.Tls13;});});

然后我们将其发布到linux上并运行起来,如下:

b66580a8273a951ba92a89f4e296d5be.png

接下来我们借助nmap工具扫描该端口,如下:

7df341eee9fa74636d4b7b219a77a7d8.png

耐心等待一会,最终扫描输出结果如下,我惊呆了

ba6b7032751590443e0ad6245026c7d6.png

.NET Core TLS SSL协议默认启用的是支持v1.1和v1.2,明明设置的是仅支持v1.3,这不是和没设置一样吗?

webBuilder.UseStartup<Startup>();
webBuilder.UseKestrel(options => 
{var sslCertPath = Path.Combine(AppContext.BaseDirectory, "ssl.pfx");options.ConfigureHttpsDefaults(co =>{co.SslProtocols = SslProtocols.Tls12;});options.Listen(IPAddress.Any, 5000,listenOption =>{listenOption.UseHttps(sslCertPath, "KSnRJkGPf@OVA8uDsY*D5EP4kd!AagLS84uNS~5@@u#dKrNxHC");});});

那只能说明代码有问题,既然已经设置了,但是未生效,so,那说明放的顺序有问题,那我将上述设置协议放在监听HTTPS之前又会如何呢?如上,首先我们配置仅支持v1.2,会不会扫描出v1.1呢?

b4f0a12330b1a1ba0709a1d433705bc2.png

看来猜测的不错,和配置顺序有关系,v1.1协议已不支持,同理,对于配置v1.3输出结果如下

159777aebd041c88240a5530e40006d6.png

至此,TLS SSL协议指定已经得到了解决,稍加思索,想想也正常,监听端口之前,必须建立连接,所以协议配置肯定在监听端口之前指定

讲到这里,我们进一步稍加了解原理,对于协议和端口监听整个过程大概是怎样的

我们首先看看通过指定SSL证书路径和密码监听HTTPS内置的大致实现

4de938d42c296238c421a580784b0403.png

监听HTTPS存在多个重载,看来都是通过X509Certificate2来加载证书、验证证书等等操作

f4981052215c83c4404f968e49ed4696.png

内置赋值上述类加载证书,然后在如下扩展方法中应用各个选项,如下标注即为引用进行连接的选项

a41f885110b0e595aec34191629ae0f6.png

3577b6b9c625b7d0e836e997dff56879.png

由于我们在开始时将SSL v1.3协议配置在监听HTTPS下面,所以执行到这里时,使用的默认协议1.1和1.2

5c300292533d26df296b6904ed1cb76f.png

同时需要注意一点的是:在.NET Core 3.x版本中,证书密码必须提供,但此种情况我通过查看源码,若没记错的话,应该是5.x中,证书密码可以为空

783c3c85b8ea8504afb5501eabc090d2.png

‍‍‍‍‍‍‍‍‍其实在监听HTTPS扩展方法中提供了所使用连接TLS SSL协议的重载,当时配置时没想那么多,因为此前配置已经写好,平台根据实际情况可开启HTTP或HTTPS,所以直接调用默认HTTPS选项配置,结果大意了‍‍‍bf4384754277627a50d5ba2609a80cee.png‍‍‍‍‍‍

c8ac353c30e70fe2421e24c94cd2b150.png

当然若明确必须是HTTPS协议,我们也可以基于默认配置去修改,如下:

webBuilder.UseStartup<Startup>();
webBuilder.UseKestrel(options =>
{var sslCertPath = Path.Combine(AppContext.BaseDirectory, "ssl.pfx");options.ConfigureHttpsDefaults(co =>{co.SslProtocols = SslProtocols.Tls13;co.ServerCertificate = new X509Certificate2(sslCertPath, "KSnRJkGPf@OVA8uDsY*D5EP4kd!AagLS84uNS~5@@u#dKrNxHC");});options.Listen(IPAddress.Any, 5000);});

没啥可总结的234df7fdbe1e1b79fbbf4efda8f06233.png,大意失荆州,一度怀疑配置了v1.3,但工具扫描却支持1.1和1.2,认为问题出在openssl配置支持的问题,未曾想一时疏忽,一顿操作,没考虑建立连接过程,则对应配置顺序也应一致,.NET Core提供多种配置,然鹅我却刚好卡在中间,自己钻了自己的空子

‍‍‍‍后面多学习,开始多写写.NET Core在Linux上的部署、操作等等之类的,好了,我们下次再见‍‍‍‍

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

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

相关文章

Android之CheckBox复选框控件使用inelayout.xml Xml代码

linelayout.xml Xml代码<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" android:layout_width"match_parent" android:layout_height&quo…

frame buffer编程--画点功能和新增字符串代替RGBT

&#xff08;一&#xff09;&#xff1a;写在前面 这一次进行了一个比较大的迭代&#xff0c;在这里我先把相对于上一个版本的改进做一个解释&#xff1a; 1:进一步完善画点&#xff0c;增加了使用字符串代替RGBT值2:实现字符串解析出RGBT值3:增加了画圆的算法4:进一步增强了代…

这篇博士毕业论文致谢句句诛心......

全世界只有3.14 % 的人关注了爆炸吧知识本文来源&#xff1a;学术志综合自小木虫、网络等&#xff0c;作者yechm AUT博士毕业论文感谢信&#xff1a;我出生的时候是一个下雪的深夜&#xff0c;我的父亲在床边生了一堆柴火&#xff0c;我的母亲躺在四周漏风的那间破屋角落的床上…

30分钟通过Kong实现.NET网关

什么是KongOpenrestry是一个基于Nginx与Lua的高性能平台&#xff0c;内部有大量的Lua库。其中ngx_lua_moudule使开发人员能使用Lua脚本调用Nginx模块。Kong是一个Openrestry程序&#xff0c;而Openrestry运行在Nginx上&#xff0c;用Lua扩展了nginx。所以可以认为Kong Openres…

Proxy模式简介和用例

在软件系统中&#xff0c;有些对象有时候由于某些原因&#xff08;比如对象创建开销很大&#xff0c;或者某些操作需要安全控制&#xff0c;或者需要进程外的访问&#xff09;&#xff0c;如果直接访问会给使用者或者系统结构带来很多麻烦&#xff0c;这时可以在客户程序和目标…

这个小姐姐真的很火辣......

1 穿着十分火辣的美女...▼2 你还有理了&#xff1f;▼3 学生&#xff1a;我们要把老师照片挂墙上&#xff01;▼4 喜悦中带着阵阵悲伤...▼5 你瞅啥&#xff1f;瞅你咋地&#xff01;▼6 一时竟没发现哪里不对▼7 老板&#xff0c;我们KTV最漂亮的都在这了▼你点的每个赞…

RPC调用框架比较分析

什么是RPC&#xff1a; RPC&#xff08;Remote Procedure Call Protocol&#xff09;——远程过程调用协议&#xff0c;它是一种通过网络从远程计算机程序上请求服务&#xff0c;而不需要了解底层网络技术的协议。 简言之&#xff0c;RPC使得程序能够像访问本地系统资源一样&am…

VS扩展CodeMaid代码整理插件

CodeMaid是Visual Studio的开源扩展&#xff0c;用于清理和简化我们的C&#xff03;&#xff0c;C &#xff0c;F&#xff03;&#xff0c;VB&#xff0c;PHP&#xff0c;PowerShell&#xff0c;JSON&#xff0c;XAML&#xff0c;XML&#xff0c;ASP&#xff0c;HTML&#xff0…

Centos5 install vnc

2019独角兽企业重金招聘Python工程师标准>>> 很详细的install steps: http://wiki.centos.org/HowTos/VNC-Server#head-76401321dae4d80916a7fd7e710272a9b85c9485 ---------------------------------------------------------------------------------------------…

北大学霸隐居20年,王青松花光350万后,如今怎么样了?

全世界只有3.14 % 的人关注了爆炸吧知识传说我国&#xff0c;本科生遍地走&#xff0c;研究生多如狗。但一估算&#xff0c;从1977年高考恢复以来&#xff0c;国内现在的本科率竟然还不到5%。这样一想&#xff0c;30多年前的本科生数量肯定更少&#xff0c;也更珍贵。如果是北大…

文件给制实施规定的实例(GB8567-88)

尽管在文件编制中存在着很多灵活性&#xff0c;然而&#xff0c;文件的编制确实是非常必要的&#xff0c;其意义如前所述。为了控制这种灵活性&#xff0c;保证文件编制能达到应该达到的目的&#xff0c;对于具体的软件开发任务&#xff0c;应编制的文件的种类、详细程度应取决…

python 内存数据库下载,Python 文件存储和数据库

Python 中数据存储的方式和其他语言没什么区别&#xff0c;主要分为两个方面&#xff1a;文件存储和数据库存储。文件存储文件存储的方法也分为很多种&#xff0c;主要包括&#xff1a;Python 内置方法NumPy 模块方法os 模块方法csv 模块方法Python 内置方法在不需要借助任何外…

c#10中的namespace

A、namespace是c#用来管理类型隔离的关键字&#xff0c;在不同的namespace下可以相同名称的类型&#xff0c;并且namespace是可以嵌套的。Demo01.csnamespace NameSpaceDemo {internal class Demo01Class{ }namespace NSDemo01{internal class Demo01Class{}}namespace NSDemo…

岛国小姐姐来例假时,男朋友背着她偷偷查手机......

1 大猪蹄子们都好好学学▼2 人形扫地机&#xff1f;&#xff1f;&#xff1f;▼3 妈&#xff0c;看下你儿子大学四年积攒的宝藏▼4 你以为养老院很无聊&#xff1f;▼5 这个事是全世界统一的吗&#xff1f;▼6 爸爸&#xff1a;今天做个温柔的人吧▼7 那些隐藏在民间的车…

mysql-普通查询(General Query)慢查询(Slow Query)相关日志配置

2019独角兽企业重金招聘Python工程师标准>>> 配置 配置方法一: 服务启动时 # vi /etc/my.cnf ... log-outputTABLE,FILE general-log1 slow-query-log1# systemctl restart mysqldlog-output默认是FILE,还有个值是NONE,就不输出日志了.我这里演示的是表和日志文件都…

他让全世界凶手睡不着觉,现实版福尔摩斯,退休了4次又被拽回来工作,无敌实在是太寂寞了~...

全世界只有3.14 % 的人关注了爆炸吧知识今天要说一位最近在中国圈粉无数萌萌哒老爷爷他是《挑战不可能》里的李博士也是世界上最牛逼的刑侦鉴识专家DrHenryLee李昌钰人称现实版福尔摩斯他是全球身价最高的鉴识专家之一据说工作酬劳是10000美元/时如果哪个案子他都破不了那这个c…

集成Dapr的 Azure 容器应用

微软在 Ignite 2021 大会上发布了预览版的Azure Container Apps&#xff0c;这是一个完全托管的无服务器容器运行时&#xff0c;用于大规模构建和运行现代应用程序。从2021 年 11 月 2 日起&#xff0c;Azure 容器应用程序可在公共预览中使用。虽在服务到达 GA 之前&#xff0c…

浅谈SQL注入风险 - 一个Login拿下Server(转)

前两天&#xff0c;带着学生们学习了简单的ASP.NET MVC&#xff0c;通过ADO.NET方式连接数据库&#xff0c;实现增删改查。 可能有一部分学生提前预习过&#xff0c;在我写登录SQL的时候&#xff0c;他们鄙视我说&#xff1a;“老师你这SQL有注入&#xff0c;随便都能登录了。不…

炸了!中国学者首次被Science撤稿,与之前首次被Nature撤稿的教授来自同一所大学……...

全世界只有3.14 % 的人关注了爆炸吧知识两次撤稿并非学术造假&#xff1f;国庆假期结束的第一天&#xff0c;Science杂志将中国地质大学宋怀兵副教授两个月前发表的文章进行了撤稿处理。这也是新中国建国以来&#xff0c;首次被Science撤稿的论文。其实早在8月&#xff0c;Scie…

如何编写干净流畅的Web API测试

前言当我们为Web API编写测试用例时&#xff0c;代码基本是这样的&#xff1a;public class UnitTest1 {private readonly TestServer _server;private readonly HttpClient _client;public UnitTest1(){// Arrange_server new TestServer(new WebHostBuilder().UseStartup<…