使用 SSL 加密包括以下步骤:
- 使用证书识别对等方。
- 为以下通信创建和交换密钥。
- 交换数据,使用先前交换的密钥加密。
您通常使用加密,因为您认为任何人都可能会监听连接。这种被动侦听的一小步是主动操纵 SSL 也可以检测到的连接。但是为此它需要正确识别您的对等方,否则中间的任何人都可以声称是正确的服务器。
使用自签名证书是不可能进行正确识别的,因为任何人都可以使用与您相同的凭据创建这样的证书。这意味着没有人应该单独信任自签名证书。如果它可以使用另一种方式验证它,它应该只信任自签名证书。这种其他方式可以是服务器端的手动配置(通常不是这种情况,除非发件人直接知道收件人)或通过DANE验证证书,其中域的所有者在受信任的 DNS 记录中提供他们的证书或指纹(需要DNSSec)。
服务器在检测到不受信任的证书时实际执行的操作有所不同:有些会接受证书并写入verify=NO
邮件的 Received 标头,而另一些可能会拒绝使用 SSL 连接,因为他们认为连接不安全并降级为纯文本或根本不连接. 这取决于发送服务器的设置。
目前,大多数邮件服务器可能会成功连接到其他服务器,即使它们无法验证其证书。但是,越来越多的人使用“真实的”(可验证的)证书。如果您比较 Facebook 从2014 年5 月到2014 年8 月的报告,您会发现可验证证书的使用率在短短 4 个月内从 30% 上升到 95%。这意味着,在不久的将来,更多服务器可能需要使用真实证书。
这意味着,使用由知名 CA 签名的证书肯定比使用自签名证书更好。但即使这样也可能无法提供您想要实现的安全性。操作系统信任的第 100 个 CA 中的任何一个都可以颁发这样的证书,因此攻击者也可能会尝试为您的域获取证书。但这至少比创建另一个自签名证书要困难得多,因为攻击者需要破解 CA 或以某种方式控制您的邮件域,以捕获 CA 在识别过程中使用的邮件。
主动中间人的另一种攻击是通过攻击 DNS 重新路由邮件:要将邮件从发送邮件服务器路由到负责您的域的服务器,发送服务器需要进行 DNS 查找对于您的域的 MX 记录,其中包含您的邮件服务器的名称。发送服务器附近的主动攻击者可以攻击此 DNS 查找并提供指向其自己服务器的虚假 MX 记录。TLS 在这里不再有帮助。相反,您必须使用 DNSSec 来保护您的 DNS 记录,并且发件人必须验证此记录。
除此之外,TLS 不为邮件提供端到端的安全性,只是逐跳。介于两者之间的任何邮件服务器都可以访问普通邮件,因此需要完全信任。要获得端到端加密,您需要使用 S/MIME 或 PGP。正因为如此,一些服务器管理员根本不关心正确的 TLS,因为即使正确实施,TLS 也不会为邮件提供真正的(端到端)安全性。