前段时间,我在 Windows Server 2019 计算机上设置了一个 SMTP 服务器。该服务器的 FQDN 是smtp.mydomain.com并且智能主机设置为 smtp-relay.gmail.com,尽管我认为这并不重要。
我将 Let's Encrypt CA 生成的通配符证书 (*.mydomain.com) 安装到个人存储,并能够为 SMTP 服务器设置 TLS:
现在,我想更新证书。为此,我将由同一 CA 生成的具有相同主题(CA=*.mydomain.com)的更新证书安装到个人存储中。然后,我停止了 SMTP 服务器并删除了旧证书。之后,我启动了服务器并检查是否已捕获新证书,但事实并非如此!
消息显示“没有证书,TLS 不可用。”这意味着 SMTP 服务器找不到正确的证书。我读了十几个博客和问答,但无法解决这个问题。
有人知道如何正确更新 Windows Server 2019 计算机上的 SMTP 服务器证书吗?
更新——新的证书包含一个私钥,并且对于在同一台机器上运行的 Web 服务器来说运行良好。
答案1
我遇到了同样的问题,但有些不同。
我正在调查,到目前为止的发现:
我不使用通配符证书,我有带 SAN 的 Let's Encrypt 证书。它已经工作了几个月,三次续订都没有问题。现在,在第四次续订后,SMTP 停止工作。最后一个有效的证书是在 2020-07-28 颁发的,续订是在 2020-09-22 完成的。如果证书是问题的根源,那么 Let's Encrypt 方面在这段时间内发生了一些变化。
行为很奇怪。当 smtpsvc 服务启动时,它会找到证书,并记录
已找到 SMTP 虚拟服务器实例“1”的 TLS 服务器证书,其指纹为 <certificate_thumbprint_removed>。TLS 将可用于此虚拟服务器。
在事件日志中,但在 Internet 信息服务 (IIS) 6.0 管理器中的 SMTP 虚拟服务器属性中的“安全通信”部分中的“访问”选项卡中我可以看到
如果没有证书,则 TLS 不可用。
证书本身必须发生一些变化,或者有一些 Windows 更新改变了 smtpsvc 功能,或者有一些关于 SSL/TLS 的变化。
顺便说一句,我发现微软的 smtpsvc 服务代码中有一个错误。如果您使用带有主题备用名称 (SAN) 的证书,当它搜索合适的证书时,它不会检查通用名称 (CN),而只会检查 SAN 列表中的第一个条目!如果第一个 SAN 与在“传递”选项卡、“高级...”按钮、“完全限定域名”字段中输入的 FQDN 匹配,则 smtpsvc 将使用该证书。如果匹配的名称在 CN 中或在 SAN 列表中的第二、第三等位置,它将不会使用该证书并记录
未找到可用于 SMTP 虚拟服务器实例“1”的 TLS 服务器证书。此虚拟服务器的 TLS 将被禁用。
答案2
我们遇到了同样的问题 - 通配符替换为通配符,但事实证明我们必须使用旧式通配符而不是常规通配符,然后关闭出站 tls,重新启动 smtp,打开 tls,再次重新启动,之后它就可以按预期工作了。
答案3
我也遇到过同样的问题。对我来说,解决方法是从证书存储中删除新证书。启动 IIS 7.0 并导入 PFX,导入后,SMTP 服务器会在安全通信部分显示新的到期日期。