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

这篇具有很好参考价值的文章主要介绍了解决dotnet调用https请求被中止未能创建SSL/TLS安全通道。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境:dotnet4.7.2/winserver2012

问题描述:

调用https出现请求被中止,未能创建SSL/TLS安全通道
解决dotnet调用https请求被中止未能创建SSL/TLS安全通道,.net,windows server

第一试

自定义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
解决dotnet调用https请求被中止未能创建SSL/TLS安全通道,.net,windows server

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

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

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

对了,如果是新版的是有个Reboot可选,表示重启机器,这个要勾选。Apply之后不会立即生效的,重启机器后生效。文章来源地址https://www.toymoban.com/news/detail-573308.html

到了这里,关于解决dotnet调用https请求被中止未能创建SSL/TLS安全通道的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • powershell报错:“irm : 请求被中止: 未能创建 SSL/TLS 安全通道“

    powershell 执行下载的时候。报错:“irm : 请求被中止: 未能创建 SSL/TLS 安全通道“。 此时系统,所有的网络下载 经过https安全加密方式的TLS请求都会报错。因为加密版本不匹配的问题。 可以通过以下命令,查看当前加密协议,一般要新协议 Tls12 : .NET Framework 中的传输层安全

    2024年01月17日
    浏览(18)
  • System.Net.WebException: 请求被中止: 未能创建 SSL/TLS 安全通道。

    System.Net.WebException: 请求被中止: 未能创建 SSL/TLS 安全通道。 客户端执行https请求时,报出“System.Net.WebException: 请求被中止: 未能创建 SSL/TLS 安全通道。”的问题。原因是:服务端更改了安全协议,而执行的客户端并未注册该协议。 如果客户端的.net framework版本低于4.0,协议类

    2024年02月04日
    浏览(10)
  • System.Net.WebException:“请求被中止: 未能创建 SSL/TLS 安全通道。”

    一、问题描述 当使用 HttpWebRequest.GetResponse() 方法进行 HTTPS 请求时,有可能会出现 System.Net.WebException: 请求被中止: 未能创建 SSL/TLS 安全通道的异常,这通常是因为客户端和服务器之间的 TLS 版本不兼容造成的。 二、解决方案 1.指定 TLS 版本 :可以通过在代码中设置 ServicePoin

    2024年02月11日
    浏览(9)
  • 微信使用证书退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道

    微信使用证书退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道

    解决方法:IIS-》应用程序池-》高级设置-》进程模块-》加载用户配置文件,设置为True就可以了。

    2024年02月03日
    浏览(7)
  • C#调用webapi HTTPS报错:基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系--安全证书问题

    1、首先加入命名空间: using System.Net.Security; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; SSL网站,连接时需要提供证书,对于非必须提供客户端证书的情况,只要返回一个安全确认即可。我的是.NET FrameWork4.0 2、加入以下代码: 3、接收证书进行身份验

    2024年02月13日
    浏览(13)
  • C# 解决 https请求 ssl证书问题,看我一篇通通解决

    废话不多说,直接上代码,实干兴邦,空谈误国!光说不贴源代码更是耍流氓! 针对旧版本的接口框架,.netformwork4.5以下,加上传统的ssl机制即可解决问题。 针对.net core版本的框架,采用ssl证书验证回调的方式,其中方案二和方案三同属于一种解决方式,方案三的更直接明了

    2024年02月16日
    浏览(17)
  • RestTemplate发起HTTPS请求Unsupported or unrecognized SSL message 报错解决

    原因:RestTemplate默认是不支持HTTPS请求的,那么如果想使用RestTemplate发送一个HTTPS的请求 ,就需要对证书进行处理,这里记录一下一个可行的方法忽略证书的校验。 使用 RestTemplateBuilder 来构建一个 RestTemplate ,而非使用默认。 requestFactory() 方法用来设置 ClientHttpRequestFactory 。

    2024年02月11日
    浏览(9)
  • https请求报错:javax.net.ssl.SSLHandshakeException:Received fatal alert: unrecognized_name 的解决过程

    https请求报错:javax.net.ssl.SSLHandshakeException:Received fatal alert: unrecognized_name 的解决过程

    提示:本地调试正常: 项目场景: 部署到WebSphere服务器上就会报上述错误; 一度认为是WebSphere服务器上的配置有问题,经过多次偿试,最终解决问题发现和服务配置无关; 测试环境使用HttpClient发送https请求下载附件时报错: 提示:项目地址是http,需要访问的地址是https: 因为访问

    2024年02月05日
    浏览(21)
  • HTTPS请求忽略SSL证书

    现场环境: 后端服务部署在docker内,远程调用https接口,线上报错: unable to find valid certification path to requested target 解决方案: 设置SSLSocketFactory忽略证书校验 实现案例: 使用的cn.hutool.http.HttpRequest工具类请求的数据,支持设置头部、表单、body、超时时间等关键信息 工具类 SSL

    2024年02月11日
    浏览(9)
  • RestTemplate HTTPS请求忽略SSL证书

    使用RestTemplate发送HTTPS请求的时候,出现了这样的一个问题: RestTemplate 默认不支持https协议 解决方案:         第一种是忽略认证         第二种是导入证书,比较复杂(比第一种安全)  这里说一下第一种解决方案,忽略认证 版本:Spring Boot2.x RestTemplateConfig 测试代

    2024年02月10日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包