如何在asp.net webform 4.5应用程序的web.config中向Mailsetting添加SecurityProtocolType.Tls12支持

问题描述 投票:0回答:1

我有旧的 asp.net webform 应用程序 (4.5),由于安全原因,TLS 已升级到 TLS 1.2,因此依赖于 TLS 1.0 的邮件功能无法正常工作。

如果服务器支持 TLS 1.0,则以下代码适用,但在新服务器上,TLS 1.0 和 TLS 1.1 被禁用,因此 web.config 中的以下代码不再工作,它不会给出任何错误,但电子邮件不适用于默认功能,例如作为 asp.net 会员模块的密码重置,这取决于 web.config 中定义的以下代码

 <system.net>
    <mailSettings>
      <smtp from="[email protected]">
        <network host="outlook.office365.com" port="587" enableSsl="true" userName="[email protected]" password="Passward" />
      </smtp>
    </mailSettings>
  </system.net>

如果要在代码 .cs 文件中完成相同的操作,那么我们可以添加以下代码,它将添加 TLS 1.2 支持并且代码可以工作,但我不确定如何在上述代码中为 SMTP 在 web.config 中的邮件设置中添加相同的内容。任何指针,因为我无法在网上找到相同的语法

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
asp.net ssl webforms smtp web-config
1个回答
0
投票

这个问题最终解决了吗?我有一个相关的问题,但我建议更好地描述该问题以反映主要问题。

最好分享您的错误,并提及您为解决问题所做的所有尝试。

您的回答并没有吸引太多贡献,因为它以问题的语气暗示,提供强制 TLS 的代码将解决问题,但这并不总是正确的。

以下是您问题的答案:

在 .NET 中,您可以通过设置 ServicePointManager.SecurityProtocol 属性来强制执行特定版本的 TLS。此属性指定用于验证和加密连接的安全协议。

例如,以下是强制执行 TLS 1.2 的方法:

c#

    System.Net.ServicePointManager.SecurityProtocol = 
    System.Net.SecurityProtocolType.Tls12;

您应该在发送电子邮件之前设置此属性。在 ASP.NET 应用程序中,您可以在 Global.asax.cs 的 Application_Start 方法中或在邮件发送类的构造函数中设置此项。

对于 ASP.NET 配置,您可以使用 targetFramework 属性在 部分指定 TLS 1.2。具体方法如下:

<system.net>
 <mailSettings>
   <smtp deliveryMethod="Network" from="[email protected]">
    <network host="email-smtp.eu-west-1.amazonaws.com" port="465" 
    userName="AKIA4MEB726JJVKIZW4V" 
    password="oBa8LYqaAXXsKwv3seruKLCuxuZ/jDCwvAoTZy7e" 
    useDefaultCredentials="true" enableSsl="true" 
    targetFramework="4.5"/>
   </smtp>
 </mailSettings>
</system.net>

上述配置中,targetFramework设置为4.5,表示将使用TLS 1.2。

请注意,强制执行特定版本的 TLS 可能会影响与某些服务器或客户端的兼容性,因此请确保参与电子邮件通信的所有各方都支持 TLS 1.2。此外,您应该及时了解最新的安全最佳实践,并考虑更新到可用的新版本 TLS。

© www.soinside.com 2019 - 2024. All rights reserved.