.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…

linux如何挂载U盘

挂u盘之前&#xff0c;运行命令cat /proc/partitions,看看现在系统中有哪些分区。插上u盘以后&#xff0c;再次运行上述命令&#xff0c;看看多出来什么分区&#xff08;通常是sda1&#xff0c;PS由于偶是在虚拟机下装的&#xff0c;所以是sdb1). 1、插入U盘 2、输入 fdisk -…

光通信调制方式MATLAB仿真,基于LED的紫外光通信调制方式研究

赘固中文核心期刊基于&#xff2c;&#xff25;&#xff24;的紫外光通信调制方式研究何攀&#xff0c;李晓毅&#xff0c;侯倩&#xff0c;肖文林(重庆通信学院&#xff0c;重庆&#xff14;&#xff10;&#xff10;&#xff10;&#xff13;&#xff15;)摘要&#xff1a;紫…

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;这时可以在客户程序和目标…

struts2中jsp页面上验证码的生成

如何在jsp页面中显示验证码&#xff1a; 验证码&#xff1a;<img class"yzm_img" align"middle" id"validateImage" src"p_w_picpathCode.action" width"150" height"40" οnclick"this.srcp_w_picpathCo…

挑战程序设计竞赛部分题目选择排序、二分查找找出下标、深度优先算法、求三角形max周长、蚂蚁算法、操作excel

首先提供帮助类 可能这个类还需要更新 、求最大值、求最小值、选择排序、二分查找找出下标、二分查找排好序列里面是否有那个值 public class Util {//求最大值public static int maxValue(int a,int b) {int max =0;if (a > b) {max = a;} else {max = b;}return max;}//求…

nginx php oracle,第8天 ORACLE安装及NGINX整合PHP环境

oracle 11g安装在centos5.9x64下过程1.先检查是否安装开发工具、JAVA、ksh等&#xff0c;及其它如下yum search检查&#xff0c;若没有安装&#xff0c;则用yum groupinstall 开发工具 开发库 Java开发yum install pdkshyum install sysstatyum install libaio-develyum insta…

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

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…

hibernate中的id特殊属性hilo剖解(多用于继承关系)

hilo是hibernate中最长用的一种生成方式&#xff0c;hibernate给出了hilo 和 seqhilo两种生成器&#xff0c;他们的分别向下面一样配置 Hilo配置代码 <id name"id" type"int" column"id"> <generator class"hilo"> <…

Centos5 install vnc

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

搜索引擎(lucene)

专辑&#xff1a;Lucene (全文检索工具)从入门到精通简介:Lucene是apache软件基金会4 jakarta项目组的一个子项目&#xff0c;是一个开放源代码的全文检索引擎工具包&#xff0c;即它不是一个完整的全文检索引擎&#xff0c;而是一个全文检索引擎的架构&#xff0c;提供了完整的…

自动摘要php,修改DEDECMS文章自动摘要长度或者取掉文章摘要

首先&#xff0c;应该在系统→系统基本参数→其它选项“自动摘要长度” 中可以设置&#xff0c;但最高只能实现250&#xff0c;根本没用&#xff0c;所以现在总结一下几种方法方法一&#xff1a;第一步进数据库 找到表 dede_archives 下的字段 description 点更改,修改长度 或 …

解决PKIX:unable to find valid certification path to requested target 的问题

问题的根本是&#xff1a; 缺少安全证书时出现的异常。 解决问题方法&#xff1a; 将你要访问的webservice/url....的安全认证证书导入到客户端即可。 以下是获取安全证书的一种方法&#xff0c;通过以下程序获取安全证书&#xff1a; /** Copyright 2006 Sun Microsystems, In…

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

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

如何在 Dapper.NET 中使用事务?

咨询区 Amit&#xff1a;我的项目中使用 dapper.net 做数据库连接框架&#xff0c;有一个需求需要在多个表上执行多次插入操作&#xff0c;我想把它 事务化&#xff0c;但我看 dapper 并没有提供类似的方式。请问我该如何使用 dapper 来做这项工作呢&#xff1f;回答区 Newteq …