【问题标题】:What is the relationship between port number and SSL/TLS端口号和SSL/TLS有什么关系
【发布时间】:2023-04-04 02:20:01
【问题描述】:

根据SmtpClient.EnableSsl property documentation,这个类正好提供了一种使用 SSL 的方法——设置属性并使用 SSL over TLS。它特别谈到了另一种不受支持的方式:

另一种连接方法是建立 SSL 会话 在发送任何协议命令之前提前。这种连接方式 有时称为 SMTP/SSL、SMTP over SSL 或 SMTPS,默认情况下 使用端口 465。这种使用 SSL 的替代连接方法不是 目前支持。

SMTP,尤其是它的安全方面,并不是我所知道的。这个问题 (C# ASP.NET Send Email via TLS) 提出了并非所有 SMTP 服务器都支持 TLS 的观点,但事实是,我不确定端口、SSL 和 TLS 之间的关系。我认为 SSL 和 TLS 是独立的协议,但“SSL over TLS”听起来更像是在视频压缩领域拥有独立的容器/编解码器/传输。

我假设虽然我可以将端口从 25 更改为 465,但这不会神奇地改变任何东西 - 但很可能邮件服务器将被配置为仅侦听特定端口(即不是 25)上的 SSL 请求?

使用SmtpClient 除了设置EnableSsl 来切换我的应用程序是否使用SSL 之外,我是否还需要做任何事情?

【问题讨论】:

标签: c# .net ssl smtp smtpclient


【解决方案1】:

我在您的链接中没有看到任何提到“SSL over TLS”的地方,尽管使用了“SMTP over TLS”这个术语,这可能是造成一些混乱的原因吗?

就端口而言,普通 SMTP 端口 (25) 期望使用的协议是普通 SMTP,而 SMTPS 端口 (465) 期望客户端首先建立安全连接使用 SSL/TLS,然后将通过安全通道继续“说”普通 SMTP。这与 HTTP 与 HTTPS 非常相似,后者也使用不同的端口。

考虑到SmtpClient 不支持这种安全的 SMTP 方法,上述内容有些实际意义,但是当设置了EnableSsl 时,它希望连接到标准 SMTP 服务器(端口 25),并且在通常的 SMTP 引入会发出 STARTTLS 命令,该命令向服务器发出信号,表明它即将开始 TLS 握手以“升级”连接以确保安全。从那时起,事情基本上与上面的 SMTPS 机制相同。

当然,要使其工作,服务器必须支持这种安全方法,并且还必须在其对客户端初始EHLO 的响应中通告STARTTLS 命令的可用性,否则SmtpClient 配置为EnableSsl = true 将在按照文档中的指示尝试发送时抛出异常。

【讨论】:

  • 我确定我看到了“SSL over TSL”,但我认为您一定是对的,这是一个误会 :) 感谢您的回答。我假设现代邮件服务器确实支持SmtpClient SSL 方法?
  • 如果大多数现代邮件服务器都支持 SSL/TLS,我希望它们都支持。
猜你喜欢
  • 2019-03-26
  • 1970-01-01
  • 2012-12-03
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多