AWS SES TLS 1.0/1.1告警处理:.NET应用如何启用TLS 1.2?
解决.NET Framework 4.7.2应用通过AWS SES SMTP发送邮件时强制使用TLS 1.2的问题
针对你遇到的AWS SES检测到TLS 1.0连接的问题,结合你的.NET Framework 4.7.2环境,可通过以下几种方式强制启用TLS 1.2:
1. 在代码中显式指定TLS版本
在创建SmtpClient实例前,添加代码设置安全协议为TLS 1.2(可同时兼容未来的TLS 1.3):
// 强制使用TLS 1.2及以上版本 System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12 | System.Net.SecurityProtocolType.Tls13; // 原有的邮件发送代码 NetworkCredential nwc = new NetworkCredential( System.Configuration.ConfigurationManager.AppSettings["GenesisMailCredentialsEmail"], System.Configuration.ConfigurationManager.AppSettings["GenesisMailCredentialsPassword"]); SmtpClient smtp = new SmtpClient( System.Configuration.ConfigurationManager.AppSettings["GenesisMailSMTP"].ToString()) { Port = port, UseDefaultCredentials = false, Credentials = nwc, EnableSsl = useSSL }; smtp.Send(mail);
注意:确保useSSL变量的值为true,AWS SES SMTP要求启用SSL/STARTTLS。
2. 通过应用配置文件全局配置
无需修改代码,在web.config或app.config的<configuration>节点下添加以下配置,全局设置应用的安全协议:
<system.net> <settings> <!-- 指定仅使用TLS 1.2 --> <servicePointManager securityProtocol="Tls12" /> <!-- 如需兼容TLS 1.3,可改为:securityProtocol="Tls12, Tls13" --> </settings> </system.net>
3. 配置AWS Beanstalk服务器的系统级TLS设置
若上述方法仍未生效,需确保Beanstalk的Windows服务器系统级禁用TLS 1.0/1.1,强制使用TLS 1.2。可通过.ebextensions配置文件实现:
在应用根目录创建.ebextensions文件夹,新建tls-config.config文件,内容如下:
container_commands: # 禁用TLS 1.0服务器端 01_disable_tls10_server: command: reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" /v Enabled /t REG_DWORD /d 0 /f # 禁用TLS 1.0客户端 02_disable_tls10_client: command: reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" /v Enabled /t REG_DWORD /d 0 /f # 禁用TLS 1.1服务器端 03_disable_tls11_server: command: reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" /v Enabled /t REG_DWORD /d 0 /f # 禁用TLS 1.1客户端 04_disable_tls11_client: command: reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" /v Enabled /t REG_DWORD /d 0 /f # 启用TLS 1.2服务器端 05_enable_tls12_server: command: reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" /v Enabled /t REG_DWORD /d 1 /f # 启用TLS 1.2客户端 06_enable_tls12_client: command: reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" /v Enabled /t REG_DWORD /d 1 /f
部署此配置后,Beanstalk服务器会自动修改注册表设置,强制系统仅使用TLS 1.2。
额外验证步骤
- 确认SES SMTP端点配置正确:eu-west-1区域的端点为
email-smtp.eu-west-1.amazonaws.com - 检查SMTP端口:推荐使用587(STARTTLS)或465(SSL),确保端口与
EnableSsl设置匹配
内容的提问来源于stack exchange,提问作者Robert Benedetto
相关产品推荐
相关产品推荐

