邮件和其他协议

安全证书上的名称无效或不匹配:Outlook 证书警告怎么办

作者: · 最后核实

报错信息The name on the security certificate is invalid or does not match the name of the target site.

Outlook 弹出这个警告,是因为它连到的服务器出示的证书里没有它使用的主机名。 大多数时候 Outlook 没连到你的邮件服务器:要么自动发现把它带到了网站的主机上,要么账户设置里用了一个邮件服务器证书不覆盖的别名。

快速修复

多数情况把 Outlook 里的收发服务器改成证书上的主机名,或者修好自动发现的 DNS,警告就会消失。

  1. 在安全警告框里点“查看证书”,记下“颁发给”的名称和颁发者。
  2. 对照“文件 → 账户设置 → 服务器设置”里的收件(IMAP/POP)和发件(SMTP)服务器名称。
  3. 如果证书写的是服务商的服务器名(比如 server12.hosting.example),就把收发服务器都改成这个名字。
  4. 如果证书属于网站主机,而且提示里出现 autodiscover,修复自动发现的 DNS(见下文)。

直接测试邮件端口,也可以用 STARTTLS 检测:

openssl s_client -connect mail.example.com:993 -servername mail.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject -ext subjectAltName
openssl s_client -starttls smtp -connect mail.example.com:587 -servername mail.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject

原因

最典型的是自动发现连到了网站主机,其次是服务器设置用了证书不覆盖的别名。

1. 自动发现连到了网站而不是邮件服务

Outlook 会按顺序尝试 https://example.com/autodiscover/autodiscover.xml、https://autodiscover.example.com/... 等位置。如果根域名的网站服务器用另一个名字的证书响应,Outlook 就会警告。

  • 确认: 警告里出现 autodiscover 或 example.com,查看到的证书是你网站主机的。
  • 修复: 按邮箱服务商文档,把 autodiscover.example.com 设置成他们给出的 CNAME,或按要求添加 _autodiscover._tcp 的 SRV 记录;同时确认 example.com 网站本身有覆盖该名字的有效证书。在 DNSPod、阿里云解析里添加即可。

2. 服务器设置用了别名

mail.example.com CNAME 到服务商,但服务商的证书只写了它自己的主机名。

  • 确认: 上面的 openssl s_client 显示 subject 和 SAN 里都没有 mail.example.com。
  • 修复: Outlook 里填服务商的主机名,或者请服务商签发包含你别名的证书。

3. 邮件服务器用了自签名或私有证书

  • 确认: “颁发给”和“颁发者”相同(即自签名证书),或者颁发者是内部 CA。
  • 修复: 为邮件主机名安装公网受信任证书(见 SMTP STARTTLS 证书错误)。内部 Exchange 改用公网域名。

4. 证书过期

  • 确认: 提示证书已过期,或者“查看证书”里的有效期已经过去。
  • 修复: 在邮件服务器上续期,然后重启或重载 IMAP、SMTP、Exchange 相关服务。

5. 杀毒软件扫描邮件

部分安全软件会拦截 IMAP/SMTP 的 TLS 连接,出示自己的证书,原理见杀毒软件 HTTPS 扫描。

  • 确认: 颁发者是安全软件的名字。
  • 修复: 更新软件让它正确安装根证书,或者关闭它的邮件扫描功能。

各环境修法

不管邮件服务器在哪里,Outlook 里填写的主机名都必须出现在服务器证书上。

Exchange Server(本地部署): 把 InternalUrl、ExternalUrl、AutoDiscoverServiceInternalUri 设置为证书上的名字,再在 Exchange 管理中心把证书分配给 IIS、IMAP、POP、SMTP 服务。

Microsoft 365 加外部网站主机: autodiscover.example.com 按租户文档指向微软;网站自己的证书只需要覆盖网站用到的名字。

虚拟主机自带邮箱(cPanel、宝塔邮局等): 很多主机商会公布“安全连接”应使用的服务器主机名,优先用它,除非主机商为 mail.example.com 签发了证书。宝塔邮局插件可以给邮件域名申请证书,申请后在 Outlook 里填同样的名字。

国内企业邮箱: 腾讯企业邮、阿里企业邮箱、网易企业邮箱都有官方的 IMAP/SMTP 地址和端口说明,按说明填写,并勾选 SSL。

Outlook for Mac 和手机客户端: 检查方式相同,修法一样。

不要这样做

把证书装成受信任、改用明文端口、让员工一律点“是”,都会让邮件暴露在真实的拦截之下。

  • 把出示的证书在每台电脑上安装成“受信任”来消除提示。 以后攻击者的证书出现时,你也会一样信任它。
  • 改用不加密的 143/110/25 端口。 邮箱密码会以明文发送。
  • 告诉员工“遇到就点是”。 这等于训练他们在遇到真实拦截时也点“是”。

常见问题

直接点“是”继续可以吗?

只有在你清楚原因、而且看到的证书正是服务商文档里写的那张时才可以。点“是”意味着 Outlook 会在无法确认服务器身份的连接上发送你的邮箱密码。应该修好主机名或证书。

用的是腾讯企业邮、阿里企业邮箱,为什么也弹警告?

多半是 Outlook 先对你自己的域名做自动发现,访问到了网站所在服务器的证书;或者收发服务器填成了 mail.example.com 这类别名。按企业邮箱服务商的设置说明,填写它们官方的 IMAP/SMTP 服务器地址,并按要求配置 autodiscover 的 DNS 记录。

内部 Exchange 用 mail.corp.local 这种名字,能申请公网证书吗?

不能。公网 CA 不为内部名称签发证书。把 Exchange 的内部和外部 URL 都改成你拥有的公网域名,再用证书覆盖这些名字。

资料来源

  1. Microsoft Learn: Autodiscover service in Exchange Server
  2. RFC 6186: Use of SRV Records for Locating Email Submission/Access Services
  3. RFC 8314: Cleartext Considered Obsolete: Use of TLS for Email Submission and Access