我正在 Windows 服务器(Server 2019)上的 IIS(10)中托管的网站上工作。该站点以前能够使用基本身份验证通过 smtp.office365.com 发送电子邮件。我使用 IISCrypto 禁用了 TLS 1.0(及更低版本),因此只启用了 TLS 1.1 和 1.2。它导致了这个错误:
The client and server cannot communicate, because they do not possess a common algorithm
重新启用 TLS 1.0 会导致错误消失。使用 SSLLabs.com 的服务器测试表明,我的站点和 smtp.office365.com 都应该能够支持 TLS 1.1 和 1.2,并具有许多共同的密码。为什么他们不连接?
这可能是由于正在使用 .NET 框架版本。
参考编号 1 https://docs.microsoft.com/en-us/dotnet/framework/network-programming/tls
参考编号 2 https://stackoverflow.com/questions/26742054/the-client-and-server-cannot-communicate-because-they-do-not-possess-a-common-a
根据微软的建议:
在您的应用上定位 .NET Framework 4.7 或更高版本。在 WCF 应用上定位 .NET Framework 4.7.1 或更高版本。
不要指定 TLS 版本。配置您的代码以让操作系统决定 TLS 版本。
执行彻底的代码审核以验证您没有指定 TLS 或 SSL 版本。