LP1*_*P13 14 .net c# smtpclient tls1.2 .net-4.8
我有 .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>部署应用程序。
基于文档的 问题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?(无需再次更改代码)
Cai*_*ete 16
这仅适用于 WCF 还是 SMTP 也默认为操作系统配置的版本?
不,这适用于所有基于 SslStream 的 .NET Framework 网络 API,其中包括 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(在 .NET 4.7+ 中其值为0(零)),在这种情况下,您可以将其设置为 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33875 次 |
| 最近记录: |