无需更改 .NET 中的代码即可启用 TLS 1.2

2023-12-25

我有 .NET 4.5.2 应用程序正在使用SmtpClient发送电子邮件。该应用程序安装在Windows 2012 R2服务器上。当我禁用 TLS 1 和 TLS 1.1 并仅启用 TLS 1.2 时,应用程序停止发送邮件。我认为这是因为 .NET 4.5.2 不支持 v1.2。

我正在考虑以下步骤

1>在 Windows Server 上禁用 TLS 1 和 TLS 1.1,仅启用 TLS 1.2。
2>在Windows服务器上安装.NET 4.8。
3>将应用程序的目标框架更改为4.8(在csproj和web.config中)并重新编译。
4>部署应用程序。

问题
基于文档 https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls Starting with .NET Framework 4.7.1, WCF defaults to the operating system configured version
1>这仅适用于 WCF 还是 SMTP 也默认为操作系统配置的版本?
2>或者我需要明确设置版本吗System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
3>是否可以立即设置版本 TLS 1.2,并且将来 TLS 1.3 可用时应用程序应自动默认为 TLS 1.3? (无需再次更改代码)


这仅适用于 WCF 还是 SMTP 也默认为操作系统配置的版本?

No, 这适用于所有基于 SslStream 的 .NET Framework 网络 API https://learn.microsoft.com/en-us/dotnet/api/system.net.servicepointmanager.securityprotocol?view=netframework-4.8,其中包括 SMTP、HTTP 和 FTP。


或者我是否需要明确设置版本,例如 System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

如果将应用程序编译为 .NET 4.7 或更高版本,则无需将值设置为System.Net.ServicePointManager.SecurityProtocol因为它将被设置为SystemDefault这意味着它将继承来自操作系统或系统管理员执行的任何自定义配置的默认安全协议。


是否可以立即设置版本 TLS 1.2,并且将来 TLS 1.3 可用时应用程序应自动默认为 TLS 1.3?

是的,你只需要检查是否System.Net.ServicePointManager.SecurityProtocol设置为其他任何不是SystemDefault(其值为0(零)在 .NET 4.7+ 中),在这种情况下,您可以将其设置为 TLS 1.2 来覆盖它。

var securityProtocol = (int)System.Net.ServicePointManager.SecurityProtocol;

// 0 = SystemDefault in .NET 4.7+
if (securityProtocol != 0)
{
    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无需更改 .NET 中的代码即可启用 TLS 1.2 的相关文章

  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • IEnumerable 与 IReadOnlyList

    选择有什么区别IEnumerable
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 如何以编程方式检查 X509 证书是否已在 Java 信任库中?

    我正在开发一个客户端 GUI 它接受自签名服务器证书并将其添加到信任存储中 就像任何浏览器一样 问题是我的客户端应用程序每次启动时都会要求提供证书 换句话说 它不记得该证书已经在信任存储中 我该如何实施 这就是我编写信任存储文件的方式 pu
  • WPF 刷新绘图是否与 Windows 窗体类似?

    因此 如果我有一个 WPF 窗口 在 WPF 窗口上移动另一个窗口是否会导致 WPF 窗口像 Windows 窗体一样进行数千次重绘 我想知道在这种情况下使用矢量的效果 而不是像窗口窗体那样基于位图的一切 你可以看一下WPF架构 http
  • 如何处理WinRT异常导致的Exception?

    如果 Windows 运行时类型引发 COM 错误 NET 似乎经常 或总是 将此错误包装到一个Exception实例 错误消息包括 COM HRESULT 错误代码 例如 当将新的加密 API 与 AES CBC 一起使用时 错误的缓冲区
  • 如何向 ActionBar 添加 SearchWidget?

    我正在尝试将 Search ActionView 添加到我的应用程序中 如此处所述http developer android com guide topics search search dialog html UsingSearchWi
  • 如何使用 NativeScript + Angular 2 项目添加侧边菜单?

    我想知道如何在我当前的 NativeScript Angular 2 项目上添加侧面菜单 我知道它有一个侧面菜单模板 但我将其作为空白项目启动 我想知道如何添加此功能 您将需要使用 Telerik UI for NativeScript h
  • 如何将大型 XML 文件转换为类似 java 8 的流对象

    嘿 我有一个 非常 大的 XML 文件 100GB 其中包含 foo 列表 我想将其转换为流 就像它们引入 java 8 对象一样 对库或代码示例有什么想法吗 在开始时
  • 需要运行文件夹中所有命令的Windows命令文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 https www online tech tips com computer tips create windows batch f
  • 如何停止实体框架缓存

    我们在测试 Entity Framework 4 时遇到问题 我们部署了一个实现 EF 数据上下文的 WCF 服务 一切正常 直到我们使用 SQL Server Studio 修改数据 有没有办法停止 EF 缓存我们的结果 或者有没有办法打
  • 除了 Google App Engine 之外还有 Python 云托管吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 等待进程结束异步,然后调用主窗体中的函数

    我正在用 C 编写一个游戏编辑器 我的程序通过启动 notepad exe 进程以 txt 文件打开 如果该进程退出 我想调用主窗体中的函数 以更新文本框 这是我到目前为止正在做的事情 void OpenTextEditor TreeNod
  • 从大表读取时出现 java.lang.OutOfMemoryError

    我正在尝试从 PostgreSQL 中的一个非常大的表 300GB 预先生成报告 我做了这样的事情 rs stmt executeQuery SELECT FROM tbl System out println select all fin
  • jQuery 的 jquery-1.10.2.min.map 正在触发 404(未找到)

    我看到有关文件的错误消息 min map 未找到 GET jQuery 的 jquery 1 10 2 min map 正在触发 404 未找到 截屏 这是从哪里来的 如果 Chrome DevTools 报告 map 文件的 404 可能
  • 循环比较宏

    我已经使用 Word 完成了一个文本比较宏 我需要循环它 以便它可以在几组文档之间进行比较 关于如何做到这一点有什么想法吗 这是我的代码 Dim template1 As Word Document Dim spool1 As Word D
  • Sqlalchemy:查询多态类的 m2m 关系

    我有两个通过多对多关系连接的类 Parent and Tag Base declarative base association table Table associations Base metadata Column parent id
  • Proguard 在不混淆的情况下进行收缩和优化

    在我的应用程序中 我有库项目依赖项 其中包含许多未使用的方法字段和类 由于这是一个第三方库 我不想自己删除所有未使用的类和方法 因为它是未来的更新 我正在尝试为此使用混淆器 但是 dontobfuscate 只会将整个项目排除在任何优化 缩
  • PHP 编译器 xdebug 警告

    PHP 新手 从事 PHP 项目并启用 xdebug 以便能够调试我的 PHP 应用程序 生产服务器没有启用 xdebug 因为它是由另一个团队处理的 在我的本地计算机上 当我运行 Composer 时 它会给我一个警告 You are r
  • 当只有一个子项可用时,最后一个子项样式会覆盖第一个子项样式

    ul li first child a border radius 5px 5px 0 0 ul li last child a border radius 0 0 5px 5px 当只有一个子项时 最后一个子项样式将覆盖第一个子项样式 有
  • Mysql 容器无法在 Kubernetes 上启动

    我正在使用this https hub docker com layers bitnami mysql 5 7 images sha256 87d11d41343c5404073f13b555e2849db4cb975f10e9b84ff4
  • pcntl_fork 在 PHP 中如何工作?

    我很困惑pcntl fork http php net pcntl fork in PHP 我认为它具有多线程功能 但它是如何工作的以及如何在脚本中使用它 PCNTL 不能创建线程 它仅 分叉 当前的 PHP 进程 这是什么意思 你打电话时
  • 无需更改 .NET 中的代码即可启用 TLS 1.2

    我有 NET 4 5 2 应用程序正在使用SmtpClient发送电子邮件 该应用程序安装在Windows 2012 R2服务器上 当我禁用 TLS 1 和 TLS 1 1 并仅启用 TLS 1 2 时 应用程序停止发送邮件 我认为这是因为