意外“根据验证程序,远程证书无效。”

Unexpected " The remote certificate is invalid according to the validation procedure."

我正在尝试通过 Mailkit 从 .NetCore/Ubuntu 机器连接到 SMTP 服务器。

我正在尝试在关闭 SSL 的情况下连接到服务器上的端口 25。

邮件服务器是本地 lan 上的 windows 服务器,并且在与问题 Ubuntu 机器上使用的设置相同的其他机器上工作正常。

用于连接的代码如下:

            using (var client = new SmtpClient())
            {
                client.Connect("smtp.mydomain.com", 25,false);
                client.Authenticate(username, password);
                client.Send(emailMessage);
                client.Disconnect(true);
            }

但是,这会在带有错误消息的 .Connect 行之后立即引发异常 "The remote certificate is invalid according to the validation procedure."

我很惊讶香草端口 25 上完全涉及证书。

有人知道发生了什么事吗?

服务器可能正在启用 TLS 作为 SMTP 的一部分。这很常见,它是 STARTTLS 动词。

如果这适用于其他 Windows 框,您是否在 AD 中?如果是这样,AD 上可能有一个 CA 颁发证书,这些证书通过组策略自动信任。所以你也需要configure OpenSSL on your Ubuntu machine to trust that CA

或者你可以直接说去他妈的,然后告诉 StmpClient 忽略安全性

client.EnableSsl = true;

您在端口 25 上看到 SSL 证书的原因是服务器在该端口上提供了 starttls。要找出使用哪个 SSL 证书,您可以通过 OpenSSL 使用以下方式 here

openssl s_client -connect exchange01.int.contoso.com:25 -starttls smtp

这里使用的这个 SSL 证书可能是自签名的,那么您可以将其替换为受信任的证书(如果可以的话),或者您可以信任自签名证书。