别了,SMTP mTLS

别了,SMTP mTLS

💡 原文中文,约4400字,阅读约需11分钟。
📝

内容提要

自2026年起,Let's Encrypt等公共CA将停止在TLS证书中包含clientAuth EKU,导致邮件服务器间mTLS失效。此举源于Chrome根证书政策,旨在缩小公共Web PKI风险,但迫使管理员改用私有CA或退回匿名TLS。

🔎

延伸解读

公共CA停发clientAuth证书的连锁反应

文章指出,从2026年起,Let's Encrypt等公共CA将停止在TLS证书中包含clientAuth EKU,这直接导致邮件服务器间mTLS失效。日志中出现的verify=0并非信任链问题,而是OpenSSL按客户端用途检查时因缺少clientAuth而报错。这意味着依赖公共证书进行双向认证的服务必须寻找替代方案,否则连接会降级为未验证状态。

Chrome根证书政策背后的安全逻辑

这一变化源于Chrome Root Program Policy,旨在缩小公共Web PKI的风险范围。浏览器厂商认为公共根证书库应专注于保护HTTPS网站,而大量企业将双用途证书部署在内部基础设施中,导致合规吊销时投鼠忌器。通过强制公共TLS证书仅含serverAuth,未来吊销操作可避免误伤内网mTLS,但代价是牺牲了非Web场景的便利性。

管理员面临的现实选择与权衡

对于像FreeBSD.org或个人邮件服务器这类原本用公网证书即可互认身份的场景,现在只能关闭smtpd_tls_ask_ccert退回匿名TLS,或自建私有CA、维护公钥指纹白名单。前者降低安全性,后者增加运维成本。文章作者对此表示无奈,认为这是“因为有人乱用,所以干脆把桌子掀了”的典型做法。

❓

Q&A

为什么从2026年开始,邮件服务器之间的mTLS会失效?

因为Let's Encrypt等公共CA将停止在TLS证书中包含clientAuth EKU,导致邮件服务器作为客户端出示证书时,因缺少clientAuth而无法通过用途检查,mTLS验证失败。

什么是EKU?它在mTLS中起什么作用?

EKU(扩展密钥用法)是X.509 v3证书的扩展,用于限制证书用途。与TLS相关的有serverAuth和clientAuth,分别用于服务端和客户端身份认证。在mTLS中,客户端证书必须包含clientAuth EKU才能通过验证。

Chrome根证书政策如何影响公共CA的证书签发?

Chrome Root Program Policy要求从2026年6月15日起逐步淘汰不符合要求的PKI体系,新中间CA只能包含serverAuth;2027年3月15日后签发的终端证书也必须只包含serverAuth。公共CA为留在Chrome根证书库中必须遵守。

浏览器厂商为什么要推动移除clientAuth EKU?

为了缩小公共Web PKI出事时的波及面。大量企业将公共CA签发的双用途证书用于内部mTLS,导致证书吊销时遭遇阻力。移除clientAuth后,公共TLS证书体系只为服务端认证服务,强制吊销时不再影响内网mTLS。

SMTP mTLS失效后,管理员有哪些替代方案?

管理员可以关闭smtpd_tls_ask_ccert,退回匿名TLS连接;或者自己维护一套私有CA,或使用公钥指纹白名单来验证客户端身份。

公共CA停止签发含clientAuth的证书后,对企业内部mTLS有什么影响?

企业若继续使用公共CA签发的证书进行内部mTLS,将因缺少clientAuth而失效。企业需要改用私有CA或购买私有PKI服务,增加了维护成本或费用。

🏷️

标签

➡️

继续阅读