自己搭建网站的步骤,网站建设专家哪家好,帝国网站模版,东莞开发方案公司【导读】此前#xff0c;测试小伙伴通过工具扫描#xff0c;平台TLS SSL协议支持TLS v1.1#xff0c;这不安全#xff0c;TLS SSL协议至少是v1.2以上才行#xff0c;想到我们早已将其协议仅支持v1.3#xff0c;那应该非我们平台问题。近日#xff0c;第三方合作伙伴再次… 【导读】此前测试小伙伴通过工具扫描平台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.UseStartupStartup();
webBuilder.UseKestrel(options
{var sslCertPath Path.Combine(AppContext.BaseDirectory, ssl.pfx);options.Listen(IPAddress.Any, 5000,listenOption {listenOption.UseHttps(sslCertPath, KSnRJkGPfOVA8uDsY*D5EP4kd!AagLS84uNS~5u#dKrNxHC);});options.ConfigureHttpsDefaults(co {co.SslProtocols SslProtocols.Tls13;});});然后我们将其发布到linux上并运行起来如下接下来我们借助nmap工具扫描该端口如下耐心等待一会最终扫描输出结果如下我惊呆了.NET Core TLS SSL协议默认启用的是支持v1.1和v1.2明明设置的是仅支持v1.3这不是和没设置一样吗webBuilder.UseStartupStartup();
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, KSnRJkGPfOVA8uDsY*D5EP4kd!AagLS84uNS~5u#dKrNxHC);});});那只能说明代码有问题既然已经设置了但是未生效so那说明放的顺序有问题那我将上述设置协议放在监听HTTPS之前又会如何呢如上首先我们配置仅支持v1.2会不会扫描出v1.1呢看来猜测的不错和配置顺序有关系v1.1协议已不支持同理对于配置v1.3输出结果如下至此TLS SSL协议指定已经得到了解决稍加思索想想也正常监听端口之前必须建立连接所以协议配置肯定在监听端口之前指定讲到这里我们进一步稍加了解原理对于协议和端口监听整个过程大概是怎样的我们首先看看通过指定SSL证书路径和密码监听HTTPS内置的大致实现监听HTTPS存在多个重载看来都是通过X509Certificate2来加载证书、验证证书等等操作内置赋值上述类加载证书然后在如下扩展方法中应用各个选项如下标注即为引用进行连接的选项由于我们在开始时将SSL v1.3协议配置在监听HTTPS下面所以执行到这里时使用的默认协议1.1和1.2同时需要注意一点的是在.NET Core 3.x版本中证书密码必须提供但此种情况我通过查看源码若没记错的话应该是5.x中证书密码可以为空其实在监听HTTPS扩展方法中提供了所使用连接TLS SSL协议的重载当时配置时没想那么多因为此前配置已经写好平台根据实际情况可开启HTTP或HTTPS所以直接调用默认HTTPS选项配置结果大意了当然若明确必须是HTTPS协议我们也可以基于默认配置去修改如下webBuilder.UseStartupStartup();
webBuilder.UseKestrel(options
{var sslCertPath Path.Combine(AppContext.BaseDirectory, ssl.pfx);options.ConfigureHttpsDefaults(co {co.SslProtocols SslProtocols.Tls13;co.ServerCertificate new X509Certificate2(sslCertPath, KSnRJkGPfOVA8uDsY*D5EP4kd!AagLS84uNS~5u#dKrNxHC);});options.Listen(IPAddress.Any, 5000);});没啥可总结的大意失荆州一度怀疑配置了v1.3但工具扫描却支持1.1和1.2认为问题出在openssl配置支持的问题未曾想一时疏忽一顿操作没考虑建立连接过程则对应配置顺序也应一致.NET Core提供多种配置然鹅我却刚好卡在中间自己钻了自己的空子后面多学习开始多写写.NET Core在Linux上的部署、操作等等之类的好了我们下次再见