解决dotnet调用https请求被中止未能创建SSL/TLS安全通道

news2024/11/23 12:46:01

环境:dotnet4.7.2/winserver2012

问题描述:

调用https出现请求被中止,未能创建SSL/TLS安全通道
在这里插入图片描述

第一试

自定义SetCertificatePolicy 函数,在建立http连接之前调用 SetCertificatePolicy 函数。

 public static void SetCertificatePolicy() {
            ServicePointManager.ServerCertificateValidationCallback
                += RemoteCertificateValidate;
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.SystemDefault |
                                                   SecurityProtocolType.Tls | SecurityProtocolType.Tls11 |
                                                   SecurityProtocolType.Tls12;
        }

        private static bool RemoteCertificateValidate(object sender, X509Certificate cert,
            X509Chain chain, SslPolicyErrors error) {
            // trust any certificate!!!
            //System.Console.WriteLine("Warning, trust any certificate");
            return true;
        }

第二试

请求被中止: 未能创建 SSL/TLS 安全通道
英文搜索关键词 : the request was aborted could not create ssl/tls (net 4.6)

statckoverflow 上面大多答案如下:

ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;

也有用如下的(强烈不建议使用)

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

原因:

Tls1.0 由于安全原因,大部分https服务端已经不再建议支持。

.Net 4.5及之前的版本,不支持Tls1.2 ,SecurityProtocolType这个枚举中没有Tls12这个项

Windows Server 2012 R2中,安装了.Net 4.6.x或4.7.x后,虽然系统支持,.Net也支持,但是默认的协商协议列表不包含Tls1.2

解决方案(PowerShell脚本):

查看当前系统中默认启用的协商协议列表

[Net.ServicePointManager]::SecurityProtocol

打印出来的结果应该是不包含Tls12 的,我实测的Win10 1603以及Windows Server 2012 R2显示均为如下:

Ssl3, Tls
继续执行如下代码,修改设置:

针对64位.Net:

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

针对32位.Net:

Set-ItemProperty -Path ‘HKLM:\SOFTWARE\Microsoft.NetFramework\v4.0.30319’ -Name ‘SchUseStrongCrypto’ -Value ‘1’ -Type DWord
关闭PowerShell窗口,打开一个新的PowerShell窗口,执行以下代码

[Net.ServicePointManager]::SecurityProtocol

结果如下:

Tls, Tls11, Tls12, Tls13
重启之前受影响的.Net应用程序即可生效

.Net <4.5.x 参考链接 https://stackoverflow.com/questions/27953681/changing-security-protocol-per-request-httpclient

.Net 4.6.x参考链接 https://trailheadtechnology.com/solving-could-not-create-ssl-tls-secure-channel-error-in-net-4-6-x/

官方资料:https://docs.microsoft.com/en-us/security/solving-tls1-problem

附加资料

查看服务器是否可以升为TLS1.2
在这里插入图片描述

网上有手动改注册表的方案,但这种方式万一误操作就不好了。所以还是建议使用软件修改,推荐下面这个软件。

官方网站地址:https://www.nartac.com/Products/IISCrypto/
下载地址:https://www.nartac.com/Products/IISCrypto/Download
下载地址:window服务器禁用默认的ssl2.0和ssl3.0只启用启用tls1.2保证安全

在这里插入图片描述

对了,如果是新版的是有个Reboot可选,表示重启机器,这个要勾选。Apply之后不会立即生效的,重启机器后生效。

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

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

相关文章

设计模式之建造者设计模式

写在前面 不知道&#xff0c;你在工作中有没有使用过lombok&#xff0c;如果你使用过&#xff0c;不知道你有没有使用过其中的Builder注解&#xff0c;其就会帮我们生成建造者设计模式相关的代码&#xff0c;本文就一起来看下吧&#xff01; 1&#xff1a;介绍 1.1&#xff…

css3的新特性

动画效果 过渡 transition 鼠标放上去瞬间变大 过渡是变大的过程慢慢变化 第一个参数&#xff1a;对哪些值进行过渡。all为hover中所有&#xff0c;也可以指定属性 第二个参数&#xff1a;让动画过渡多长时间。要添加单位&#xff08;s秒&#xff09; 第三个参数&#xff1…

路径规划算法:基于厨师优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于厨师优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于厨师优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化算法厨师…

【pytest自动化测试框架】从0到1由浅入深详细讲解

一&#xff1a;框架简介 pytest&#xff0c;rf&#xff08;学关键字语法&#xff0c;报告漂亮&#xff09;&#xff0c;unitest   pytest是python的第三方单元测试框架&#xff0c;可以做系统测试&#xff0c;比unitest更简洁和高效&#xff0c;执行315种以上的插件&#xff…

AtcoderABC256场

A - 2^NA - 2^N 题目大意 给n,计算2n 思路分析 可以直接使用幂运算进行计算&#xff0c;也可以利用位运算来快速计算。 使用幂运算&#xff1a;将2连乘N次。利用位运算&#xff1a;2的N次方等于1左移N位&#xff08;即将1的二进制表示中的1向左移N位&#xff09;。 时间复…

Redis数据结构 — SDS

目录 C 语言字符串的缺陷 简单动态字符串SDS 扩容机制 SDS优点 字符串在 Redis 中是很常用的&#xff0c;Key-Value中的Key是字符串类型&#xff0c;Value有时也是字符串类型 Redis 是用 C 语言实现的&#xff0c;但是它没有直接使用 C 语言的 char* 字符数组来实现字符串…

如何激励员工跟踪时间?

正确跟踪工作时间对有效的企业管理和盈利能力起到重要作用。企业通过跟踪时间&#xff0c;监控出勤情况&#xff0c;确保员工收到应得的工资&#xff0c;保护企业的利益。 时间跟踪对企业来说和其他指标一样重要&#xff0c;但他们往往难以说服员工将其视为一种有益的活动。那…

windows 下载安装Redis,并配置开机自启动

windows 下载安装Redis&#xff0c;并配置开机自启动 1. 下载 地址&#xff1a;https://github.com/tporadowski/redis/releases Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择&#xff0c;这里我们下载 Redis-x64-xxx.zip压缩包&#xff0c;之后解压 打…

园区水电能源管理系统平台

园区水电能源管理系统平台是一种集成了水电能源监测、管理和优化功能的平台&#xff0c;旨在帮助园区管理者实现对水电资源的实时监测、合理节能和优化使用。随着能源需求的不断增长和能源价格的不断攀升&#xff0c;园区管理者面临着越来越大的节能减排压力。因此&#xff0c;…

selenium查找svg元素

目录 如何为SVG元素编写XPath 使用local-name&#xff08;&#xff09;的语法 需要记住的一点 将“and”与SVG元素一起使用 如何定位嵌套的SVG元素&#xff1f; XPath是一种用于定位XML文档中的web元素的语言&#xff0c;包括构成网页的HTML文档。在Selenium中&#xff0…

001 Jetpack Compose入门

目录 1.前提准备 2.新建项目 1.前提准备 下载最新版本的AndroidStudio&#xff0c;我目前的版本如下&#xff1a; 注意要将kotlin环境配置好 2.新建项目 新建项目中空Activity就是新建的Compose项目 然后就会得到一个Compose界面的应用 为何要学Compose可以看郭霖的文章&…

拉丁语翻译软件分享-收藏这几个备用

在当今全球化的时代&#xff0c;语言交流变得更加重要。虽然英语已经成为国际通用语言&#xff0c;但依旧有一些古老的语言在特定领域和文化中仍然得到广泛使用。其中&#xff0c;拉丁语作为古代罗马帝国的官方语言&#xff0c;对欧洲语言起了重要的影响。在本文中&#xff0c;…

el-select组件如何在页面一加载时就根据数据选中el-option中的数据

页面一加载就要选中下拉中的数据&#xff0c;要和下拉数组中的value的类型一致&#xff0c;value是number,select的v-model就不能是字符串&#xff0c;必须是number.不然就会显示字符串

【C语言】【数据结构初阶】 快排变慢排?怎么个事儿?

一.为何“快排”变“慢排” 我们知道&#xff0c;快排是一种很好的排序算法。但是在极少数的一些情况下&#xff0c;“快速排序”好像名不副实了。比如&#xff1a;1&#xff0c;2&#xff0c;1&#xff0c;2&#xff0c;1&#xff0c;2&#xff0c;1。。。。。。这样的数列。 …

十七、web网页像素知识

目录&#xff1a; 像素视口 一、像素 像素&#xff1a;- 屏幕是由一个个发光的小点构成&#xff0c;这一个个的小点就是像素- 分辨率&#xff1a;1920 x 1080 说的就是屏幕中小点的数量- 在前端开发中像素要分成两种情况讨论&#xff1a;css像素和物理像素- 物理像素&#xff…

具有电动驱动的四足机器人模型研究(SimulinkMatlab代码)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Mac的docker安装redis

Mac的docker安装redis 1、docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source key-value store that… 12205 …

unity 2018.4.0+SteamVR1.2.2+VRTK3.2.1报错解决

开发案例参考 07-游乐设备选择场景搭建_哔哩哔哩_bilibili 导入之后代码报错Assets/SteamVR/Editor/SteamVR_Settings.cs(135,49): error CS0117: UnityEditorInternal.VR.VREditor does not contain a definition for GetVREnabledDevices 解决方法 打开SteamVR_Settings 脚…

深入了解C语言中scanf()函数的用法

目录 正文 一、基本用法 二、格式化字符串 三、多个输入值 四、错误处理 五、总结 正文 在C语言中&#xff0c;scanf()函数是一个非常有用的输入函数&#xff0c;它允许我们从用户那里获取输入&#xff0c;并将输入存储到指定的变量中。本文将详细介绍scanf()函数的使用方…

【ELK企业级日志分析系统】部署Filebeat+Kafka+Logstash+Elasticsearch+Kibana集群详解(EFLFK)

部署FilebeatKafkaLogstashElasticsearchKibana集群详解 1. Kafka1.1 Kafka概述1.1.1 为什么需要消息队列&#xff08;MQ&#xff09;1.1.2 使用消息队列的好处 1.2 消息队列的两种模式1.3 Kafka定义1.3.1 Kafka简介1.3.2 Kafka的特性1.3.3 Kafka系统架构1.3.4 Partation数据路…