当前位置: 首页 > 知识库问答 >
问题:

在一个应用程序中使用了什么版本的TLS。NET应用程序安装在不同的操作系统上

洪飞白
2023-03-14

假设我有一个标准。NET(4.5)web应用程序,需要使用TLS连接到安全服务器。

我希望停止在服务器中支持未使用或较弱的协议和密码套件,只支持客户端也支持的协议和密码套件(最好是TLS 1.2)

使用中的TLS(1.0、1.1或1.2)和/或密码套件的版本是否取决于操作系统或. NET版本?

换句话说,我的。NET应用程序在安装在具有不同操作系统/更新的机器上时会使用不同的密码套件或TLS版本吗?还是. NET 4.5的使用确保了每个客户端-服务器通信上的协议都是相同的?

共有2个答案

司徒翼
2023-03-14

这是一个比我在. NET问题上写的更好的答案:https://stackoverflow.com/a/28333370/4148708

本质上:

.NET 4.0最多支持TLS 1.0。NET 4.5支持最高TLS 1.2

实际上,我两个都见过。NET 4.5和。NET 4.6默认为TLS 1.0,如果您不需要:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

无法评论。NET 4.7,但我认为它仍然默认与TLS 1.0握手,这样整个互联网不会突然中断 。NET 4.7通过SystemDefaultTlsVersions注册表项(感谢Panagiotis Kanavos)使用任何操作系统默认值——本报告中有更多发现。

这真正意味着什么。NET 4.7,ServicePointManager。SecurityProtocol现在返回系统默认值。

关于操作系统问题,是的。NET调用SCHANNEL,它是Microsoft的安全支持提供程序(想想Windows世界的“OpenSSL”)。只要您在Windows Server 2008 R2上运行,您就适合TLS 1.2。

摘自这篇综合性博文(blogs.msdn.microsoft.com):

https://github.com/snobu/tls-negotiations

申屠森
2023-03-14

从…开始。NET 4.7。NET使用操作系统的默认设置。

由System. Net. Security. SslStream和HTTP、FTP和SMTP等堆栈组件使用的TLS堆栈允许开发人员使用操作系统支持的默认TLS协议。开发人员不再需要硬编码TLS版本。

在4.7之前,您必须指定要显式使用的TLS版本

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12

对于。NET 4.7,ServicePointManager。SecurityProtocol(如果未显式设置)现在返回SystemDefault

顺便说一句,最早的支持。NET版本是4.5.2。不过,大多数系统都会有更新的版本,由其他应用程序或Windows Update安装。自4.0以来的每个版本都是以前版本的二进制替换。

 类似资料:
  • 我有一个Java应用程序,其中包括两个第三方JAR(Amazon Kinesis和MaxMind GeoIP2),每个JAR都使用不同版本的Jackson。两个版本的Jackson都不适用于这两个第三方罐子。 此外,我正在运行Apache的maven JAR pluging-它创建一个包含所有依赖类的uber JAR。 鉴于我不能更改第三方JAR,我不知道如何才能让每个第三方JAR调用杰克逊的适当

  • 我正在做一些Android课程和部分作业,我必须构建一个模拟音乐播放器应用程序。这个应用不需要任何功能,所以它主要是xml代码。当我试图在模拟器中运行它时,应用程序不断崩溃,并显示“Vibes has stopped”或“Vibes keeps stoping”等消息。 可能需要补充的是,我最近在Mac上重新安装了操作系统(进行了全面清理)。我现在经营着macOS High Sierra。我在HA

  • 这可能不是典型的设置,但由于更高的决策,我们最终在一个应用程序中有多个 kafka 集群,每个集群有多个主题,每个集群可能具有不同的序列化策略。Json/avro.avro可能与融合的架构注册表一起使用,或者使用单个对象编码。 好吧,我通过构建自己的抽象和注册中心,分析配置并手动创建大部分内容,以某种方式实现了它,但我觉得我需要在几个地方多次重复主题名称、模式注册url等内容,以便创建所有需要的b

  • 我正在尝试获取iOS应用程序中的用户位置。我首先在我的项目中包括了corelocation框架。然后点击一个按钮,我调用核心位置api,如下所示。当我试图将其安装到设备中时,核心位置从不请求用户权限。当我尝试在单击按钮时获取位置时,我得到的KClauthorizationStatusNotDetected为AuthorizationStatus。请帮我做这件事。我不知道发生了什么事。 这是我的sh

  • 我必须开发一个支持视窗、苹果操作系统和Chrome操作系统的应用程序——至少。Chrome操作系统是一个重要的要求,因为这个应用程序旨在学校使用——Chromebook是一种一件大事。正如你可能知道的,Chrome应用程序在Windows、MacOS和Linux上被弃用,所以我们有两个基于网络的“本地”应用程序的选择:电子和NW. js。 由于我是从头开始开发这个应用程序的,并且没有转换任何现有的

  • 我已经通过和签名生成了文件 此文件已成功安装在我的设备上 注意:类型不存在此问题。此问题仅适用于类型