出乎意料的"根据验证程序,远程证书无效。"

时间:2016-08-18 13:02:16

标签: smtp certificate asp.net-core mailkit

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

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

邮件服务器是本地局域网上的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行之后立即引发异常 "根据验证程序,远程证书无效。"

我很惊讶在香草港口25上都有证书。

有没有人知道发生了什么?

2 个答案:

答案 0 :(得分:2)

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

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

或者你可以说他妈的,告诉StmpClient忽略安全性

client.EnableSsl = true;

答案 1 :(得分:0)

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

  

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

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