c# - SChannel 错误:请求被中止:无法创建 SSL/TLS 安全通道
问题描述
我正在尝试在以下站点访问和使用 XML:https ://www.dhs.gov/ntas/1.1/alerts.xml 。但是,我不断收到消息:“请求已中止:无法创建 SSL/TLS 安全通道。” 当我在我们的开发服务器上运行我的应用程序时。我在我们服务器的事件日志中看不到任何内容。
奇怪的是,当我从本地主机访问提要时,它工作正常。
我的应用程序正在使用 .Net 框架 4.6.2。据我了解,它应该默认支持 TLS12(除非我错了)。当直接浏览链接时,我尝试过的浏览器——Chrome、Firefox、Edge——可以成功访问并显示 XML。IE11 是例外,无法显示。
我尝试通过以下方式手动添加 TLS12 支持:
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | 安全协议类型.Tls11 | 安全协议类型.Tls12
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072 | (SecurityProtocolType)768 | 安全协议类型.Tls;
这是我正在使用的代码。如上所述,这适用于本地主机。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(NTASUri);
request.UserAgent = Request.ServerVariables["HTTP_USER_AGENT"];
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(responseFromServer);
return xmlDoc.InnerXml;
有没有人有任何想法可以做些什么来让它工作?
解决方案
谢天谢地,我的系统人员最终解决了这个问题。我们现在可以在我们的服务器上使用 feed。
在注册表中,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002\ 键下列出的密码套件是有限的,并且仅是 Windows 支持的密码套件的一个子集。
删除指定一组密码套件的函数字符串值会将 Windows 客户端返回到默认行为/顺序。
更多信息:
https://www.windows-security.org/2c488aac52906551ff218fd5c2bdaddc/ssl-cipher-suite-order
希望这可以帮助其他人在这种情况下。
推荐阅读
- java - 删除object-java数组中的一个元素
- python - 通过 Python 创建一个没有模块的日历
- python - 用于匹配 HTML 字符串中的结束标记的正则表达式
- python - Python Flask 向表单动态添加/删除字段
- google-bigquery - 在 Big Query 中使用不同的日期格式查询多个表
- python - Pandas Dataframe 中的同时出现计数
- python - bot.event on_ready 使我的命令停止工作 discord.py
- javascript - 我在将我发现的现有反应组件集成到我的应用程序中时遇到问题。“尝试导入错误:”
- scala - 不处理消息的 Akka(Typed)actor Behavior 的类型是什么?
- react-native - 使用 GitLab 构建时 Expo 中的环境变量