端口号和SSL / TLS之间的关系是什么

时间:2015-09-03 10:32:14

标签: c# .net ssl smtp smtpclient

根据SmtpClient.EnableSsl property documentation,此类提供了一种使用SSL的方法 - 设置属性并使用SSL上的SSL。它特别谈到了另一种不受支持的方式:

  

备用连接方法是建立SSL会话的位置   在发送任何协议命令之前预先准备好。这种连接方法   有时称为SMTP / SSL,SMTP over SSL或SMTPS,默认情况下   使用端口465.这种使用SSL的备用连接方法不是   目前支持。

SMTP,特别是它的安全方面,并不是我所了解的。这个问题(C# ASP.NET Send Email via TLS)提出了并非所有SMTP服务器都支持TLS,但事实是,我不确定端口,SSL和TLS之间的关系。我认为SSL和TLS是单独的协议,但是" SSL超过TLS"听起来更像是在视频压缩领域中如何使用单独的容器/编解码器/传输。

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

使用SmtpClient我是否明智地需要做一些事情而不是设置EnableSsl来切换我的应用程序是否使用SSL?

1 个答案:

答案 0 :(得分: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机制相同。

当然,要使其工作,服务器必须支持这种安全方法,并且还必须在其对客户端的初始STARTTLS的响应中公布EHLO命令的可用性,否则为{配置了SmtpClient的{​​1}}在尝试发送时会抛出异常,如文档中所示。