当我们对 SMTP 协议使用自签名证书时会出现什么问题?

当我们对 SMTP 协议使用自签名证书时会出现什么问题?

当我们对SMTP协议使用自签名证书时,即当SMTP服务器使用自签名证书时,会出现什么问题呢?

只要用户接受由于自签名证书而产生的异常警告(Thunderbird邮件客户端就有可能出现这种情况),我认为就没有问题。

谁能告诉我还可能出现什么其他问题?

答案1

服务器到服务器通信没有问题,因为 SMTP 服务器接受任何证书,甚至会回退到未加密的连接。从这个意义上说,没有公钥基础设施对于 MX 服务器。针对降级攻击,基于 DNS 的命名实体身份验证(DANE)(参见RFC 7672通过机会性 DANE TLS 实现 SMTP 安全),利用 DNS 中发布的公钥,而不是 CA 签名的公钥。自签名证书就可以了。

为了客户端到服务器通信至少有一个受信任的 CA 签名证书会更方便。如果用户学会接受例外,那么即使存在中间人攻击,他们也更有可能这样做。此外,例如 Android 邮件客户端只允许要求受信任的证书或接受任何证书,这使得中间人攻击更加容易。这就是为什么我建议使用 CA 签名证书进行客户端通信。

您甚至可以为您的 SMTP/IMAP 服务器获取免费的 Let's Encrypt 证书,因为它不限于将同一证书用于多种协议。这几乎消除了对公开引用的邮件服务器的自签名证书的任何需求。(Postfix 的示例配置

答案2

自签名证书可能会阻止拦截邮件的简单尝试,但价值有限,因为这些尝试可能会被 MITM 攻击。如果您确实想走这条路,您应该创建一个 CA 并让您的用户接受该 CA。不幸的是,这对您的用户来说可能是一个坏主意(因为您可能会签署流氓证书),而且价值有限,因为其他 MTA 和您的 MTA 之间的流量仍可能被拦截。

没有其他人评论过的事情 - 虽然加密传输不是 SMTP 协议的一部分,但一些提供商(例如 GMAIL)会将电子邮件标记为已加密或未加密 - 并且我推测(我不使用 gmail,所以不确定)使用自签名证书的 MTA 不会被视为安全的。

正如其他人提到的,使用 LetsEncrypt 通常不是一个大问题,而且是一个更好的解决方案。

答案3

和每个自签名证书一样,客户端不能也不应信任服务器。如果您是 smtp 服务器的唯一客户端,则可以添加 CA,甚至不必接受例外。如果我是您服务器的用户之一,我肯定不会使用它。无法保证我连接到的是正确的服务器,我会假设它是流氓服务器。

PS 加密部分仍然正常,流量已加密

相关内容