IIS10 请求被中止: 未能创建 SSL/TLS 安全通道(已解决)

2023-10-22 13:21

本文主要是介绍IIS10 请求被中止: 未能创建 SSL/TLS 安全通道(已解决),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微信支付退款流程要检验证书,在开发环境 Windows10 , VS2019 ,.NET4.5 运行没有问题,发布到生产环境:Windows Server 2016 datacenter , IIS10 , .NET4.5 ,运行报错

代码以下:

Dim request As HttpWebRequest = Nothing

Dim response As HttpWebResponse = Nothing

Dim reqStream As Stream = Nothing

Dim result As String = ""

ServicePointManager.ServerCertificateValidationCallback=New RemoteCertificateValidationCallback(AddressOf CheckValidationResult)

request = CType(WebRequest.Create(url), HttpWebRequest)

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12

Dim cert As New X509Certificate2("证书全路径", "证书密钥")

request.ClientCertificates.Add(cert)

reqStream = request.GetRequestStream()

reqStream.Write(data, 0, data.Length)

reqStream.Close()

response = CType(request.GetResponse(), HttpWebResponse)

'运行到这里出现以上错误提示

Dim sr As New StreamReader(response.GetResponseStream(), Encoding.UTF8)

result = sr.ReadToEnd().Trim()

sr.Close()

上百度找了一轮,有点说证书导入问题,有的把代码X509Certificate2换成X509Certificate,有的说用微软授权工具 winhttpcertcfg -g -c LOCAL_MACHINE\MY -s "Tenpay Certificate" -a "NetworkService",但在我这里都不行,如果在开发环境可以运行没有报错,说明不是代码问题,应该是环境问题,最后找到原因:

        我们导入的客户端证书并不是所有的账户都能访问和使用,因为我们的开发服务器也就是VS自带的服务器默认使用当前用户,而当前用户具有使用证书的权限,所以我们在本地调试的时候,一切正常。当我们将网站部署到IIS后,由于IIS的使用的是内置账户不具有证书的使用权限,所以就出现了上述问题,这个时候我们只需让生产环境的用户可以都到证书就可以了,在导入证书是就可以设置读取证书权限,操作以下,鼠标右键--所有任务--管理私钥 打开证书权限配置,添加Everyone给读取权限。

,就可以正常调用啦!

如果以上还不行,就看看IIS设置里的"加载用户配置文件”是否为True, False的情况也会出现以上错误,以上为IIS10的配置图。

 

这篇关于IIS10 请求被中止: 未能创建 SSL/TLS 安全通道(已解决)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/261724

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

javax.net.ssl.SSLHandshakeException:异常原因及解决方案

《javax.net.ssl.SSLHandshakeException:异常原因及解决方案》javax.net.ssl.SSLHandshakeException是一个SSL握手异常,通常在建立SS... 目录报错原因在程序中绕过服务器的安全验证注意点最后多说一句报错原因一般出现这种问题是因为目标服务器

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField